我当前的htaccess文件如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
这对我来说很好,但我想尝试减少服务器负载,所以我在RewriteEngine On行下面添加了这行,以便在加载静态内容时停止处理:
RewriteCond %{REQUEST_FILENAME} !.*jpg$|.*gif$|.*png$|.*css$|.*js$|.*txt$|.*ico$|.*pdf$ [NC]
这是最有效的写作方式吗?感谢
答案 0 :(得分:3)
在第2行中,您已检查是否存在所请求的文件(!-f
),因此无需添加您的行,但如果您想避免,则可以使用新的重写条件替换第2行返回其他文件,如.php文件。 Performancewise我不认为这会加速apache,并且你的Web应用程序还有其他一些性能漏洞。
那就是说,你的模式可能不是你想象的那样,例如.*jpg$
也匹配mysuperjpg
。您可能正在寻找\.jpg$
,因为。是正则表达式的特殊字符。你可以这样做:
RewriteCond %{REQUEST_FILENAME} !\.(jpg|gif|png|css|js|txt|ico|pdf)$ [NC]