在Windows上的Apache2,VirtualHost似乎无法正常工作

我有一个域指向我的IP地址,现在我想要做以下事情:如果我在本地访问服务器(localhost / 127.0.0.1),我希望它从默认的DocumentRoot服务器页面。 如果我使用域名访问服务器,它将从其他目录中的文件服务器。

我编辑httpd.conf添加以下几行:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "C:/Xampp/htdocs/mydomain" ServerName mydomain.com </VirtualHost> 

不幸的是,它不能按预期工作 – 即使我通过本地主机访问服务器,它也从“C:/ Xampp / htdocs / mydomain”提供文件。

我如何解决它?

这是你想要的:

http://httpd.apache.org/docs/1.3/vhosts/name-based.html

现在,当请求到达时,服务器将首先检查是否使用了与NameVirtualHost匹配的IP地址。 如果是,那么它将查看具有匹配的IP地址的每个部分,并尝试find一个ServerName或ServerAlias与所请求的主机名匹配的地方。 如果find一个,那么它使用该服务器的configuration。 如果找不到匹配的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机。

因此,第一个列出的虚拟主机是默认的虚拟主机。 当IP地址与NameVirtualHost指令匹配时,主服务器的DocumentRoot永远不会被使用。 如果您希望为不匹配任何特定虚拟主机的请求提供特殊configuration,只需将该configuration放在一个容器中,并首先将其列在configuration文件中。