2010-02-02 49 views
2

我現在的htaccess文件是這樣的:與靜態內容除外重寫規則

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteCond %{REQUEST_FILENAME} !-d [NC] 
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA] 

這工作對我很好,但是我想嘗試和降低服務器負載,所以我也加入這一行的正下方

RewriteCond %{REQUEST_FILENAME} !.*jpg$|.*gif$|.*png$|.*css$|.*js$|.*txt$|.*ico$|.*pdf$ [NC] 

這是寫它的最有效的方法中:RewriteEngine On行,如果加載靜態內容停止處理?謝謝

回答

3

在第2行中,您已檢查是否存在請求的文件(!-f),因此不需要添加行,但可以用新的重寫條件替換行2,如果要避免返回其他行文件,如.php文件。 Performancewise我不認爲這會加速apache,並且在你的web應用程序中還有一些其他的性能漏洞。

也就是說,你的模式可能不是你所期望的,例如, .*jpg$也匹配mysuperjpg。您可能正在尋找\.jpg$,因爲。是正則表達式的特殊字符。你可以這樣做:

RewriteCond %{REQUEST_FILENAME} !\.(jpg|gif|png|css|js|txt|ico|pdf)$ [NC]