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