0

如何将 m.example.com 重定向到 m.example.com/subdir 我正在使用以下代码,但它变得循环并且无法正确重定向

RewriteEngine on
RewriteCond %{HTTP_HOST} ^m.example.com$ [NC]
RewriteRule (.*)$ http://m.example.com/subdir [R=301,L]

我也不能使用:

redirect 301 / http://m.example.com/subdir

因为我的主要 www 网站也会被重定向

4

2 回答 2

0

您需要添加一个条件,以便在请求已经针对 /subdir/ 时它不会重定向。在重写规则上方的某处添加:

RewriteCond %{REQUEST_URI} !^/subdir

您的规则中还缺少反向引用:

RewriteRule (.*)$ http://m.example.com/subdir/$1 [R=301,L]

如果您想要重定向的唯一内容是对根 (URI=/) 的请求,那么您不需要额外的重写条件,只需更改规则中的正则表达式:

RewriteRule ^$ http://m.example.com/subdir [R=301,L]
于 2012-07-06T07:50:37.847 回答
0

要仅重定向 / 但不重定向它下的任何内容,您可以在您的m.example.com <VirtualHost>

RedirectMatch ^/$ http://m.example.com/subdir/

或者,如果您想将所有内容重定向到subdir除了对自身的请求之外,subdir您可以使用 mod_rewrite

RewriteCond %{REQUEST_URI} !^/subdir
RewriteRule ^(.*)$ http://m.example.com/subdir$1 [R=301,L]
于 2012-07-06T08:09:24.493 回答