如何更改目录的URL

时间:2010-08-24 20:09:25

标签: .htaccess mod-rewrite

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

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]

1 个答案:

答案 0 :(得分:1)

您需要对发送到服务器的原始请求进行条件限制,因为%{REQUEST_URI}将在mod_rewrite处理期间发生更改,从而导致内部重定向循环。

因此,像这样的东西应该处理事情(对于404,你的301 RewriteRule如果你想交换它也可以正常工作):

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