Apache虚拟主机获取www.domain.com,但不是domain.com

我在我的网站有这个可用的apache2虚拟主机文件:

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

为什么apache从www.domain.com发送请求到正确的path,但是domain.com被发送到默认的虚拟主机?

更新:domain.com被发送到默认虚拟主机的原因是因为机器的主机名自动发送到默认值。

(明显的问题 – 是www和非www的DNS一样吗?)

为了进行debugging,-S标志对于检查configuration是非常有用的,就像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 

我会检查是否有适当的DNSloggingdomain.com和www.domain.com – 哪里有一个主要的Alogging,然后CNAME的另一个。

您可以使用network-tools.com上的工具进行查询

确保你有为www设置的DNS条目指向domain.com。

在<virtualhost>部分之外是否有一个servername指令?