Apache 为什么基于名称的virtualhost应用于ip请求?

Apache 为什么基于名称的virtualhost应用于ip请求?,apache,configuration-files,web-hosting,Apache,Configuration Files,Web Hosting,我使用apache2,ubuntu服务器8 我创建了一个基于名称的virtualhost。 我创建了文件mydomain.com,其内容如下: <VirtualHost mydomain.com:80> ServerName www.mydomain.com DocumentRoot /var/www/vhosts/xxxx/htdocs/ ServerAlias mydomain.com ServerAlias *.mydomain.com </Vir

我使用apache2,ubuntu服务器8

我创建了一个基于名称的virtualhost。 我创建了文件mydomain.com,其内容如下:

<VirtualHost mydomain.com:80>
   ServerName www.mydomain.com
   DocumentRoot /var/www/vhosts/xxxx/htdocs/
   ServerAlias mydomain.com
   ServerAlias *.mydomain.com
</VirtualHost>

服务器名www.mydomain.com
DocumentRoot/var/www/vhosts/xxxx/htdocs/
ServerAlias mydomain.com
ServerAlias*.mydomain.com
我把它放在:
/etc/apache2/可用站点
然后通过
a2ensite mydomain.com
并重新加载apache conf文件

问题是,现在,如果我在浏览器mydomain.com或xx.xx.xx.xx(ip地址)中键入,则在这两种情况下都会加载虚拟主机! 我知道这是事实,因为内容是由/var/www/vhosts/xxxx/htdocs/在这两种请求中提供的。 我希望在键入IP时不会发生这种情况


问题出在哪里?

是否添加了基于IP的硬编码主机配置?如果没有,Apache将使用第一个使用该IP的vhost。我没有这样做,因为有一个默认配置:NameVirtualHost*:80。。。。在我添加我的之前。您认为我应该吗?Apache对您指定vhost的顺序有些敏感,特别是在混合使用IP和基于名称的主机时。试着改变它们的排列顺序,看看是否有帮助。你是对的。这需要是基于IP的硬编码主机配置,而不是*:80。这就解决了问题。Thanks@Matteo那么,请在回答你的问题时提到这一点。