我需要更改目录的网址,以便:
www.example.com/foo/
变为
www.example.com
我无法移动文件。
使用mod_rewrite将htaccess文件简单地重写www.example.com到www.example.com/foo不是问题
RewriteEngine On
RewriteRule !^foo/ foo%{REQUEST_URI} [L]
但是,我必须确保如果用户请求www.example.com/foo,http状态为404或用户被重定向到www.example.com。不幸的是,无论我做什么,它似乎最终都是无限循环。例如,这会导致无限重定向循环:
RewriteEngine On
RewriteRule !^foo/ foo%{REQUEST_URI} [L]
RewriteCond %{REQUEST_URI} ^/foo
RewriteRule ^foo(.*) http://www.example.com$1 [R=301,L]
答案 0 :(得分:1)
您需要对发送到服务器的原始请求进行条件限制,因为%{REQUEST_URI}
将在mod_rewrite
处理期间发生更改,从而导致内部重定向循环。
因此,像这样的东西应该处理事情(对于404,你的301 RewriteRule
如果你想交换它也可以正常工作):
RewriteCond %{THE_REQUEST} ^[A-Z]+\s/foo [NC]
RewriteRule ^ - [R=404]