2010-10-16 94 views
2

我需要将每个子域重定向到它所属的域中,使用mod_rewrite将子域名改为参数,我不知道如何。另外,我需要“重新索引”这些参数,以便子域名成为uri的第一个参数,uri的其他参数按照它们自己的顺序跟随它。事情是这样的apache - 将子域重定向到另一个域

category.domain.com/search/flowers 

domain.com/category/search/flowers 

就如何实现这一目标使用mod_rewrite有什么想法?

干杯!

回答

7

您可以为所有的子域名与一个虚拟主机做到这一点:

<VirtualHost *:80> 
    ServerName category.domain.com 
    ServerAlias foo.domain.com bar.domain.com 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} (.*).domain.com 
    RewriteRule (.*) http://domain.com/%1$1 [R=301,QSA,L] 
</VirtualHost> 

才能正常工作,你必须有一些设置为服务器名称,所以只选择一个,并列出你的子域的其余部分在ServerAlias线上。

您可以拥有多个ServerAlias行,因此如果您有大量的子域,则可以将它们分成多行以提高可读性。

在RewriteRule中,%1匹配前面RewriteCond行中的第一个匹配模式。

+0

我没有访问权限,只是对一个普通的.htaccess – yoda 2010-10-16 20:47:23

+3

在这种情况下,只需将重写的东西放在每个子域的.htaccess中即可。假设.htaccess中没有任何其他内容,您需要保留个别子域,并且可以创建符号链接,您可以将这些内容放入.htaccess中的一个子域,并从其他子域创建符号链接。这样你就不必在多个地方重复它。 – bradym 2010-10-16 21:08:05