0

我有一个我无法弄清楚的 mod_rewrite 重定向问题。

来自特定域的所有请求都会“静默”地重写到指定的子目录中。例如www.mydomain.net/hello.html检索/net/hello.html. 以下 .htaccess (放置在我的托管根目录中)完美地实现了这一点:

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]

然而,直接进入该目录的 URL 应该明显地使用 301 重定向到没有该子目录的 URL。例如www.mydomain.net/net/hello.html应该重定向到www.mydomain.net/hello.html(而不是仍然检索文件/net/hello.html)。不幸的是,我的 .htacces 文件(放在 中/net不起作用:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]    

尽管根 .htaccess 文件中有块,但我得到了一个不定式重定向循环RewriteCond %{ENV:REDIRECT_STATUS} 200......那么有什么问题?

顺便说一句,我必须使用 mod_rewrite,因为该站点是外部托管的,我无权访问 apache 配置。

非常感谢您的任何指点。

4

1 回答 1

1

改为检查THE_REQUEST中的HTTP 请求行

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
于 2010-04-07T19:16:52.203 回答