vhost设置将多个域名和www版本重定向到单个非www域

时间:2012-04-18 06:00:12

标签: mod-rewrite vhosts

我拥有两个域名:

  • domain.com
  • domain.net

...我无法确定如何最好地设置vhost代码以实现一些目标:

  1. 如果访问者输入这两个域名中的任何一个,则会转到domain.net
  2. 如果访问者使用前面的www键入这两个域名中的任何一个,他们仍然转到domain.net没有www
  3. 保留文件路径,因此:
    • domain.com/file.php最终转到domain.net/file.php
    • www.domain.com/deeper/path/最终转到domain.net/deeper/path/
    • www.domain.net最终转到domain.net
    • ......等等
  4. 我在this Q/A entry中看到,我相信是我需要的东西,但我并非百分之百确定。有人可以确认(或纠正)这完全符合我的要求:

    <VirtualHost *:80>
        ServerName  domain.net
        ServerAlias www.domain.net domain.com www.domain.com
        (the rest of the settings here)
    </VirtualHost>
    

    ......就这么简单吗?

1 个答案:

答案 0 :(得分:3)

按原样,您的vhost将接受您的别名并使用正确的文件进行响应,但不会重定向请求。如果您想要一个规范的子域,您可能需要添加一些重写规则:

<VirtualHost *:80>
    ServerName  domain.net
    ServerAlias www.domain.net domain.com www.domain.com

    RewriteEngine On
    RewriteCond %{HTTP_HOST}    !^domain\.net [NC]
    RewriteCond %{HTTP_HOST}    !^$
    RewriteRule ^/(.*)  http://domain.net/$1 [L,R=301]

    (the rest of the settings here)
</VirtualHost>

检查http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalhost以获取进一步说明