如何将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网站也将被重定向
答案 0 :(得分:0)
您需要添加条件,以便在请求已经用于/ subdir /时不会重定向。在重写规则之上的某处添加:
RewriteCond %{REQUEST_URI} !^/subdir
您还缺少规则中的反向引用:
RewriteRule (.*)$ http://m.example.com/subdir/$1 [R=301,L]
如果您要重定向的仅事物是对root(URI = /)的请求,那么您不需要额外的重写条件,只需更改规则中的正则表达式: / p>
RewriteRule ^$ http://m.example.com/subdir [R=301,L]
答案 1 :(得分: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]