Mod-Rewrite

為所有圖像請求插入根目錄

  • October 13, 2011

我正在進行站點遷移,我需要為圖像文件設置一些重定向。某些圖像路徑請求將進入根級子目錄,我需要將/new_directory/它們放在第一個目錄中,如下所示:

Old site request -> new request
website.com/dir1/image.png -> website.com/new_directory/dir2/subdir1/image.gif
website.com/dir2/subdir1/image.gif -> website.com/new_directory/dir2/subdir1/image.gif

這是我到目前為止所擁有的,但它似乎沒有工作。我錯過了什麼?

RewriteCond %{HTTP_REQUESTURI} (dir1|dir2|dir3)(.+?)(jpg|png|gif|jpeg)    [NC,OR]
RewriteCond %{HTTP_REQUESTURI} (dir4|dir5|dir6)(.+?)(jpg|png|gif|jpeg)    [NC,OR]
RewriteCond %{HTTP_REQUESTURI} (dir7|dir8|dir9)(.+?)(jpg|png|gif|jpeg)     [NC]
RewriteRule ^(.+?)$  /new_directory/$1 [R=301,L]

我有幾RewriteCond行被打斷,因為我的實際目錄列表很長,我希望規則適合一個螢幕寬度。

這對我有用;確保您擁有RewriteEngine on,否則將不會處理重定向。如果您想查看是否mod_rewrite被擊中,請使用RewriteLog

RewriteLog /tmp/rewrite.log
RewriteLogLevel 3

如果您在重新啟動後沒有收到任何輸出,mod_rewrite甚至還沒有啟用。

此外,您可以像這樣簡化程式碼:

RewriteCond %{REQUEST_URI} ^/dir[1-9]/.+\./(jpg|png|gif|jpeg)$ [NC]
RewriteRule ^/(.*)$ /new_directory/$1 [R=301,L]

這將與您的相同,除了:

  • 它將不再匹配/some/other/dir1/image.gif,/dir1/jagif/dir1isagif
  • 重定向的 URL 將不再包含雙斜杠:/new_directory//dir1/image.gif.
  • 您不再需要擔心貪婪或非貪婪搜尋。

如果我誤解了你的問題,請告訴我!

引用自:https://serverfault.com/questions/320576