htaccess脚本 - 不允许重写特定文件

时间:2011-02-19 20:49:12

标签: zend-framework .htaccess redirect

我有以下htaccess脚本:

RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule  ^(test|test1).*  - [L]

我原以为: http://localhost/something.php将重定向到index.php

真。

我当时正在等待 http://localhost/test.php不会重定向到index.php

假。 (我也被重定向了。)

我错过了什么?

非常感谢

1 个答案:

答案 0 :(得分:2)

重写规则始终按照指定的顺序进行评估。因此,您的两个URL都与第3行中的RewriteRule相匹配。其他规则将不会被评估。要使您的测试文件不被重写,您可以将最后三个规则放在最上面(即直接在RewriteBase命令下面)。

但最后,你应该更多地使用RewriteConds,例如像这样:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(test|test1)
# the following RewriteCond is probably redundant because of the prior -f check
RewriteCond %{REQUEST_FILENAME} !\.(js|ico|txt|gif|jpg|png|css)$

RewriteRule (.*) index.php