0

我拥有两个域名:

  • 域名.com
  • 域名.net

…而且我无法确定如何最好地设置虚拟主机代码以实现一些目标:

  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
    • …等等

我在这个 Q/A 条目中看到了我认为我需要的东西,但我不是 100% 确定的。有人可以确认(或更正)这将完全满足我的需要:

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

……就这么简单吗?

4

1 回答 1

3

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

<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以获得进一步的解释

于 2012-04-18T08:44:21.503 回答