ServerAlias www.example.com无法识别

Tia*_*hou 2 apache2 virtualhost

以下是我的配置文件:

NameVirtualHost 12.34.56.78:80  

<VirtualHost 12.34.56.78:80>  
    ServerAdmin admin@domain1.com  
    ServerName domain1.com  
    ServerAlias www.domain1.com   
    DocumentRoot /srv/www/domain1.com/public_html1/  
    ErrorLog /srv/www/domain1.com/logs/error.log  
    CustomLog /srv/www/domain1.com/logs/access.log combined  
</VirtualHost>  

<VirtualHost 12.34.56.78:80>  
    ServerAdmin admin@domain2.com  
    ServerName domain2.com  
    ServerAlias www.domain2.com  
    DocumentRoot /srv/www/domain2.com/public_html1/  
    ErrorLog /srv/www/domain2.com/logs/error.log  
    CustomLog /srv/www/domain2.com/logs/access.log combined  
</VirtualHost> 
Run Code Online (Sandbox Code Playgroud)

问题是当我www.domain1.com进入浏览器时,apache2不会检索驻留的网页/srv/www/domain1.com/public_html1/,而是从另一个文件中定义的默认文档根获取页面.但是,如果我放www.domain2.com,一切正常.我没有看到两个VirtualHost配置块之间有任何区别,所以我想知道它有什么不同.顺便说一句,我没有.htaccess在他们的文档根目录下放任何文件.

小智 5

尝试通过发出以下命令检查Apache配置:

/ usr/sbin/apache2ctl -S

我猜您的"默认"虚拟主机使用"www.domain1.com"作为其ServerName,因此它响应对"www.domain1.com"的请求.

在我的机器上,这是因为"www.domain1.com"是我机器的主机名.如果未指定ServerName,Apache会尝试猜测 - 导致上述问题.

我通过在sites-available/default中指定"ServerName default"来解决这个问题.

这可能也有一些帮助:

http://httpd.apache.org/docs/current/dns-caveats.html