我想将所有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/来测试我的表达式,看起来这个正则表达式就是这样。
感谢您的帮助
答案 0 :(得分:1)
如果我尝试转到/foo
,这些规则对我有用,它不会重定向。但是,规则是以循环的方式编写的。如果您请求" / foo"以外的任何内容,它将被重写为/bar
,然后当引擎循环时,/bar
匹配相同的规则并被重写为{{1}再次。导致500错误。
但这并没有解决你的问题。条件很好。你不需要重新启动htaccess更改才能生效,你需要确保你的apache服务器设置为允许htaccess覆盖(参见/bar
指令)并且你已经加载了mod重写。