2011-05-16 51 views

回答

1

。在你的重写规则极少数的变化来解决这个很好

RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC] 
RewriteRule ^(.*)$ /%1/$1 [L] 

你应该在重写规则使用$。希望这对你有所帮助。

0

如果你已经知道的子域,您可以:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?subdomain\.your_domain\.com [NC] 
RewriteRule ^(.*) /subdomain/$1 [L] 

如果你想支持任何可能的子域,使用:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC] 
RewriteRule ^(.*) /%1/$1 [L] 
+0

对不起,但不适合我。为了您的信息,当我使用子域名时,它无处可寻。浏览器说找不到服务器。 – Tareq 2011-05-16 20:58:02

+0

然后,您需要将子域添加到您的DNS。上面假设子域可以访问,并指向运行mod_rewrite的网络服务器。 – 2011-05-16 21:57:31

+0

mod_rewrite在我的Web服务器中启用。如果我使用通配符(*)子域没有结果然后。我该怎么办 ? – Tareq 2011-05-17 03:50:53

2

您应该使用%{HTTP_HOST}而不是%{REMOTE_HOST}。这是因为%{REMOTE_HOST}%{REMOTE_ADDR}上的反向DNS查找的结果,如果启用了HostnameLookups

所以您的规则应该是

RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC] 
RewriteRule ^(.*) /%1/$1 [L]