2

下面是我的配置文件:

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在他们的文档根目录下放置任何文件。

4

3 回答 3

5

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

/usr/sbin/apache2ctl -S

我猜您的“默认”虚拟主机使用“www.domain1.com”作为其服务器名称,因此它响应对“www.domain1.com”的请求。

在我的机器上发生这种情况是因为“www.domain1.com”是我机器的主机名。如果未指定 ServerName,Apache 会尝试猜测 - 导致上述问题。

我通过在站点可用/默认中指定“服务器名称默认值”解决了这个问题。

这也可能有一些帮助:

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

于 2010-12-30T00:46:17.907 回答
2

如果您在 Windows 上并且可能使用 ZendSever,那么接下来您必须执行以下操作:

在目录“C:\Windows\System32\drivers\etc”中打开文件“hosts”

添加

127.0.0.1 www.domain1.com

在下面

127.0.0.1 本地主机
127.0.0.1 domain1.com


它应该如下所示:

127.0.0.1 本地主机

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

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

于 2013-05-04T17:59:45.823 回答
1

只是想说这也引起了我的注意,并且更改默认 apache 站点中的 ServerName 对我有用,就像简单地使用禁用该站点一样

a2dissite 默认

然后重新加载apache。

于 2013-02-27T00:06:19.530 回答