代码之家  ›  专栏  ›  技术社区  ›  fire

重写规则(静态内容除外)

  •  2
  • fire  · 技术社区  · 15 年前

    我当前的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]
    

    这是最有效的写作方式吗?谢谢

    1 回复  |  直到 15 年前
        1
  •  3
  •   Residuum    15 年前

    在第2行中,您已经检查请求的文件是否存在。( !-f ,因此不需要添加行,但是如果您想避免返回其他文件(如.php文件),可以用新的重写条件替换行2。不过,性能方面,我认为这不会加快Apache的速度,而且您的Web应用程序中还有其他一些性能漏洞。

    也就是说,你的模式可能不是你期望的那样,例如 .*jpg$ 比赛 mysuperjpg 也。你可能在找 \.jpg$ ,因为。是正则表达式的特殊字符。你可以这样做:

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