正则表达式不适用于htaccess

时间:2015-08-12 00:38:04

标签: regex .htaccess redirect

我想将所有URI重定向到“bar”,除非URI是“foo”

到目前为止,我有:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(?!\/foo$).*
RewriteRule .* /bar [L]

当我尝试访问“10.0.1.3/foo”时,我被重定向到“10.0.1.3/bar”。我希望它留在“10.0.1.3/foo”。

我在本网站上查看了类似问题的其他答案,由于某种原因,我仍然总是被重定向。是否需要重新启动apache才能读取新的htaccess文件?我没想到它......

我使用http://regexr.com/来测试我的表达式,看起来这个正则表达式就是这样。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果我尝试转到/foo,这些规则对我有用,它不会重定向。但是,规则是以循环的方式编写的。如果您请求" / foo"以外的任何内容,它将被重写为/bar,然后当引擎循环时,/bar匹配相同的规则并被重写为{{1}再次。导致500错误。

但这并没有解决你的问题。条件很好。你不需要重新启动htaccess更改才能生效,你需要确保你的apache服务器设置为允许htaccess覆盖(参见/bar指令)并且你已经加载了mod重写。