ServerAlias www.example.com无法识别

时间:2010-06-11 15:49:59

标签: 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> 

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果你在Windows上并且可能使用ZendSever,那么你必须做下一步:

在目录“C:\ Windows \ System32 \ drivers \ etc”

中打开文件“hosts”

添加

127.0.0.1 www.domain1.com

127.0.0.1 localhost
127.0.0.1 domain1.com


它应该是这样的:

127.0.0.1 localhost

127.0.0.1 domain1.com

127.0.0.1 www.domain1.com

127.0.0.1 domain2.com

127.0.0.1 www.domain2.com

127.0.0.1 domain3.com

127.0.0.1 www.domain3.com

所有域名都需要在此文件中注册。

答案 2 :(得分:1)

只是想说这也引起了我的注意,更改默认apache网站中的ServerName对我有用,就像使用

禁用该网站一样
  

a2dissite默认

然后重新加载apache。