将m.example.com重定向到m.example.com/subdir

时间:2012-07-06 06:38:10

标签: apache redirect

如何将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网站也将被重定向

2 个答案:

答案 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]