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

Apache 将m.example.com重定向到m.example.com/subdir,apache,redirect,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 由于我的主要

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

,因此需要添加一个条件,以便在请求已针对/subdir/时不会重定向。将此添加到重写规则上方的某个位置:

RewriteCond %{REQUEST_URI} !^/subdir
您的规则中还缺少一个反向引用:

RewriteRule (.*)$ http://m.example.com/subdir/$1 [R=301,L]
RewriteRule ^$ http://m.example.com/subdir [R=301,L]
如果您只想重定向对根URI=/的请求,则不需要额外的重写条件,只需更改规则中的正则表达式即可:

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

要重定向只是/但不是它下面的任何内容,您可以在m.example.com中使用类似的内容

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

RewriteCond %{REQUEST_URI} !^/subdir
RewriteRule ^(.*)$ http://m.example.com/subdir$1 [R=301,L]