2013-03-03 88 views
4

使用.htaccess mod重寫,我想重寫一個url,檢查該文件是否存在,如果不是使用部分原始url重新寫入另一個url第一次重寫。htaccess只有在文件不存在的情況下重寫

例如,如果原始URL是這個

/images/3001/zebra.jpg

我想檢查文件是否存在/images/cached/zebra.jpg,如果爲它服務它確實存在。

而且如果不是我想重寫/image.php?id=3001

非常感謝, 菲爾

+0

我不認爲'mod_rewrite'是能夠這樣做的。你的'image.php'腳本應該爲你做檢查。如果存在,它應該爲緩存版本提供服務,否則它應該爲原始服務並緩存它。然後,如果您想*僞造URI,請爲該腳本創建重寫。 – 2013-03-03 07:12:26

+0

感謝您的回覆。目前我的php腳本會按照您所描述的方式進行檢查,但這意味着調用php來處理請求。我希望如果可能的話,服務器跳過php會更有效率。 – user2128200 2013-03-03 07:33:28

回答

3

在你的文檔根htaccess文件,添加任何規則之前,這些規則你可能已經有:

RewriteEngine On 

# cached copy exists 
RewriteCond %{REQUEST_URI} ^/images/[0-9]+/(.+)$ 
RewriteCond %{DOCUMENT_ROOT}/images/cached/%1 -f 
RewriteRule^/images/cached/%1 [L] 

# cached copy doesn't exist 
RewriteCond %{REQUEST_URI} ^/images/([0-9]+)/(.+)$ 
RewriteCond %{DOCUMENT_ROOT}/images/cached/%2 !-f 
RewriteRule^/image.php?id=%1 [L] 
+0

謝謝喬恩,你剛剛救了我一天。 – codefreak 2015-03-09 12:03:49

相關問題