mod_rewrite规则未按预期工作

时间:2012-08-30 19:36:50

标签: .htaccess mod-rewrite

我正在使用以下代码

RewriteEngine on
RewriteRule  ^/(certain|folders|on|server) - [NC,L]
RewriteRule (.*) http://newserver/blog$1 [L,NS]

我希望它忽略我的文件夹列表,并重定向到其他所有内容。相反,它似乎总是重定向到“newserver”。在第一个语句中将“ - ”更改为URL确实有效,但我实际上并不希望这些文件夹指向任何位置。

为什么我的陈述不能按预期工作?

另外,我注意到对于未列出的所有文件夹,我有“newserver /”,而我列出的那些只是“newserver”(没有uri)

2 个答案:

答案 0 :(得分:0)

您需要删除规则中的前导斜杠。在htaccess文件中重写规则会被赋予一个URI,以匹配剥离的前导斜杠。通过在斜杠后添加?来更改您的第一条规则:

RewriteRule  ^/?(certain|folders|on|server) - [NC,L]

或者您可以将其更改为条件:

RewriteCond %{REQUEST_URI} !^/(certain|folders|on|server)

将应用于其后的规则。

答案 1 :(得分:0)

原来我的规则按预期工作。我以前在apache.conf中尝试使用这些规则。将它移动到站点“VirtualDirectory”标签似乎可以解决问题