我的网站可用的 apache2 虚拟主机文件中有这个:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
...
</VirtualHost>
为什么 apache 将请求从 www.domain.com 发送到正确的路径,但 domain.com 却被发送到默认虚拟主机?
更新:domain.com 被发送到默认虚拟主机的原因是因为机器的主机名自动被发送到默认值。
答案1
(显而易见的问题——www 和非 www 的 DNS 是否相同?)
出于调试目的,-S 标志可用于检查 apache 服务本身看到的配置。
基于 Debian 的世界:
apache2 -S
基于Redhat的世界:
httpd -S
另一个例子:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server localhost (/etc/apache2/sites-enabled/000-default:2)
port 80 namevhost mydomain.com (/etc/apache2/sites-enabled/domain1:16)
port 80 namevhost myotherdomain.com (/etc/apache2/sites-enabled/domain2:1
...etc
答案2
我会检查您是否拥有 domain.com 和 www.domain.com 的正确 DNS 记录 - 其中有 1 个主 A 记录,然后有另一个的 CNAME。
您可以使用以下工具进行查找网络工具网
答案3
确保您已设置 DNS 条目以使 www 指向 domain.com。
答案4
< virtualhost > 部分之外是否有 servername 指令?