Apache2 无法识别ServerAlias www.example.com

Apache2 无法识别ServerAlias www.example.com,apache2,virtualhost,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 /

下面是我的配置文件:

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> 
NameVirtualHost 12.34.56.78:80
服务器管理员admin@domain1.com  
ServerName域名1.com
ServerAlias www.domain1.com
DocumentRoot/srv/www/domain1.com/public\u html1/
ErrorLog/srv/www/domain1.com/logs/error.log
CustomLog/srv/www/domain1.com/logs/access.log
服务器管理员admin@domain2.com  
ServerName域名2.com
ServerAlias www.domain2.com
DocumentRoot/srv/www/domain2.com/public\u html1/
ErrorLog/srv/www/domain2.com/logs/error.log
CustomLog/srv/www/domain2.com/logs/access.log

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

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

/usr/sbin/apache2ctl-S

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

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

我通过在sitesavailable/default中指定“ServerName default”解决了这个问题

这可能也会有所帮助:


我只是想说,这也让我大吃一惊,更改默认apache站点中的服务器名对我来说很有效,就像使用

不同的违约


然后重新加载apache。

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

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

127.0.0.1 www.domain1.com

127.0.0.1本地主机
127.0.0.1域名1.com


应该是这样的:

127.0.0.1本地主机

127.0.0.1域名1.com

127.0.0.1 www.domain1.com

127.0.0.1域名2.com

127.0.0.1 www.domain2.com

127.0.0.1域名3.com

127.0.0.1 www.domain3.com


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

欢迎使用堆栈溢出!谢谢你的帖子!请勿在帖子中使用签名/标语。您的用户框算作您的签名,您可以使用您的个人资料发布您喜欢的任何关于您自己的信息。多么神奇的工具,难以置信的难以找到。有了这些关于apache认为您的站点在哪里解析的简单信息是令人惊讶的。非常感谢你。