VirtualHosts:不能同时拥有多个

时间:2014-05-14 03:28:17

标签: apache

似乎无法想出这一个。我想在我的本地机器上有2个ViritualHosts。两者都有不同的服务器名称这是我在httpd-vhosts.conf

中的内容
<VirtualHost *:80>
    DocumentRoot "/Users/MyName/Documents/Work/dev/project"
    ServerName work.local
    ErrorLog "/private/var/log/apache2/work.local.com-error_log"
    CustomLog "/private/var/log/apache2/work.local.com-access_log" common
    <Directory "/Users/MyName/Documents/Work/dev/project">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/MyName/Documents/Personal/Dev/project"
    ServerName dev.shop
    ErrorLog "/private/var/log/apache2/dev.shop.com-error_log"
    CustomLog "/private/var/log/apache2/dev.shop.com-access_log" common
    <Directory "/Users/MyName/Documents/Personal/Dev/project">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

这是我的主持人档案:

127.0.0.1   work.local
127.0.0.1   dev.shop

只有一个工作,无论我先放哪个,第二个总是进入第一个的DocRoot。所以ServerName本身可以工作,但是它使用了错误的DocRoot。

为什么哦为什么?我错过了什么?

顺便说一下,我在小牛队。

2 个答案:

答案 0 :(得分:0)

hosts文件的语法应为:

127.0.0.1   inspire.local dev.shop

IP的所有别名必须在同一行。这与Apache无关,它通常是系统解析/etc/hosts的方式。

答案 1 :(得分:0)

想出来。

NameVirtualHost *:80

结果NameVirtualHost指示如何获取VirtualHosts。所以在我的例子中,两个Virtualhost都被声明为:

<VirtualHost 127.0.0.1:80>

这与我的NameVirtualHost不匹配,因此默认使用第一个。

我将它们改为完全匹配,如下所示:

<VirtualHost *:80>

现在他们工作了。

该死。

希望这有助于其他人。