.htaccess 如何更改目录的url

.htaccess 如何更改目录的url,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我需要更改目录的url,以便: www.example.com/foo/ 变成 www.example.com 我无法移动这些文件 使用mod_rewrite将htaccess文件简单地重写为www.example.com/foo不是问题 RewriteEngine On RewriteRule !^foo/ foo%{REQUEST_URI} [L] 但是,我必须确保,如果用户请求www.example.com/foo,http状态为404,或者用户被重定向到www.example.co

我需要更改目录的url,以便:

www.example.com/foo/
变成

www.example.com
我无法移动这些文件

使用mod_rewrite将htaccess文件简单地重写为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]

您需要对发送到服务器的原始请求设置条件,因为
%{request\u URI}
将在
mod\u rewrite
处理期间更改,从而导致内部重定向循环

因此,类似这样的东西应该会解决问题(对于404,如果您想在中交换,301
重写规则也应该可以正常工作):

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/foo [NC]
RewriteRule ^ - [R=404]