Mod重写 - 重写一切但是

时间:2011-11-09 21:31:02

标签: apache mod-rewrite

我有这行代码:

RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L]

我怎样才能更改它,以便它不会重写我创建的新目录,例如“admin”。目前正在重写。

2 个答案:

答案 0 :(得分:3)

您可以使用RewriteCond

RewriteCond %{REQUEST_URI} !^/admin
RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L]

请注意RewriteCond上正则表达式之前的感叹号。它使正则表达式恢复其含义。因此,在这种情况下,如果请求URI不以/admin开头,则条件为真。

有关详细信息,请参阅mod_rewrite documentation

答案 1 :(得分:0)

重写规则按接收顺序处理。在处理该规则之前,您需要具有将路由到现有目录的处理程序。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ allcities.php?state=$1 [QSA,L]