如何编写RewriteRule以对一个文件进行异常处理

时间:2010-06-02 14:27:13

标签: apache .htaccess mod-rewrite

我目前在.htaccess文件中有这个:

Options +FollowSymLinks  
RewriteEngine On    
RewriteRule ^(.*)\.html$ index.php?pagename=$1&%{QUERY_STRING}

将html文件名重写为pagename查询字符串。

但是我试图允许访问一个特定的静态html文件,所以不知何故我需要覆盖规则或者例外。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

  1. 自己追加QUERY_STRING没有意义;如果没有,你会离开流浪&,mod_rewrite已经有了一个更好的工具:

    RewriteRule ^(.*)\.html$ index.php?pagename=$1 [QSA]

  2. 您可以控制RewriteRule前面有RewriteCond的{​​{1}}。例如:

    RewriteCond %{REQUEST_URI} !^/staticpage.html$
    RewriteRule ^(.*)\.html$ index.php?pagename=$1 [QSA]

  3. 另一种有用的模式是RewriteCond %{REQUEST_FILENAME} !-f,它将绕过以下RewriteRule 任何时间,该URL与docroot中的现有常规文件相匹配。