apache-将子域重定向到另一个域

apache-将子域重定向到另一个域,apache,.htaccess,Apache,.htaccess,我需要将每个子域重定向到它所属的域中,使用mod_rewrite将子域名称更改为参数,我不确定如何更改。另外,我需要“重新索引”这些参数,以便子域名成为uri的第一个参数,uri的其他参数按照它们自己的顺序跟随它。像这样的 category.domain.com/search/flowers 到 关于如何使用mod_rewrite实现这一点,您有什么想法吗 干杯 您可以使用一个虚拟主机为所有子域执行此操作: <VirtualHost *:80> ServerName cat

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

category.domain.com/search/flowers

关于如何使用mod_rewrite实现这一点,您有什么想法吗


干杯

您可以使用一个虚拟主机为所有子域执行此操作:

<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>

ServerName category.domain.com
ServerAlias foo.domain.com bar.domain.com
重新启动发动机
重写cond%{HTTP_HOST}(.*).domain.com
重写规则(.*)http://domain.com/%1$1[R=301,QSA,L]
要使其正常工作,必须将某个设置为ServerName,因此只需选择一个,并在ServerAlias行中列出其余子域

您可以有多个ServerAlias行,因此如果有大量子域,可以将它们分成多行以便于阅读


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

我无权访问该模式,只能访问普通的.htaccess。在这种情况下,只需将重写内容放入每个子域的.htaccess中即可。假设您在.htaccess中没有任何其他内容需要为各个子域保留,并且您可以创建符号链接,那么您可以将这些内容放在一个子域的.htaccess中,并从其他子域创建符号链接。这样你就不必在多个地方重复了。
<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>