Apache 将子目录重定向到子域问题

Apache 将子目录重定向到子域问题,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我有如下.htaccess文件: RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC] RewriteRule ^/?market/(.*)$ http://market.example.com/$1 [L,R=301] RewriteRule ^/?buddies/(.*)$ http://buddies.example.com/$1 [L,R=301] RewriteRule ^/?bazaar/(.*)$

我有如下.htaccess文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteRule ^/?market/(.*)$ http://market.example.com/$1 [L,R=301]
RewriteRule ^/?buddies/(.*)$ http://buddies.example.com/$1 [L,R=301]
RewriteRule ^/?bazaar/(.*)$ http://bazaar.example.com/$1 [L,R=301]
它在market子目录中运行良好。它重定向到子域。但是,其他两个子目录存在问题

其他2个子域的错误:

The page isn't redirecting properly

我应该怎么做才能克服这个问题呢?

这是因为
RewriteCond
只适用于下一个
RewriteRule
。最后2条规则对所有主机执行,包括
buddies
bazaar
,并导致重定向循环

您需要这些规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteRule ^/?market/(.*)$ http://market.example.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteRule ^/?buddies/(.*)$ http://buddies.example.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteRule ^/?bazaar/(.*)$ http://bazaar.example.com/$1 [L,R=301]