CNAME 和虚拟主机的问题

mrc*_*der 0 domain-name-system cname-record virtualhost apache-2.2

我正在使用 Apache 并且我有一个 CNAME DNS 记录

sub2.sub1.domain1.com 指向 sub1.domain1.com

我有一个 A DNS 记录

指向 IP 的 sub1.domain1.com。

然后在我的 httpd.conf 文件中,我有:

<VirtualHost *:80>
        ServerName www.domain1.com
        DocumentRoot /domain1/www
</VirtualHost>

<VirtualHost *:80>
        ServerName sub1.domain.com
        DocumentRoot /domain1/sub1/www
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是我似乎遗漏了一些东西,因为当您访问 sub2.sub1.domain1.com 时,它会向您显示 domain1.com 的页面。当您访问 sub1.domain1.com 时,它会显示 sub1 的正确页面。

Joh*_*Siu 5

尽管您有 CNAME 记录将 sub2.sub1.domain1.com 指向正确的服务器,但 apache 服务器可能会为多个网站提供服务。

当一个 http 请求进来时,apache 会根据ServerName检查 URL以确定要提供的网站。如果有任何其他名称指向同一个网站,请将它们放在ServerAlias 中

在您的 httpd.conf 中,您必须为 sub2.sub1.domain1.com添加ServerAlias

<VirtualHost *:80>
    ServerName sub1.domain.com
    ServerAlias sub2.sub1.domain1.com
    DocumentRoot /domain1/sub1/www
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

此外,httpd.conf 中的第一个VirtualHost声明用作默认. 当一个 http 请求进来并且不匹配任何ServerNameServerAlias 时默认站点被提供。