2014-05-14 71 views
0

似乎无法找出这一个。我想在我的本地机器上安装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> 

,这里是我的hosts文件:

127.0.0.1 work.local 
127.0.0.1 dev.shop 

只有一个作品,无论我把第一,第二个一定要去的的文档根第一。所以ServerName本身可以工作,但它使用了错误的DocRoot。

为什么哦为什么?我错过了什么?顺便说一下,我在小牛队。

+0

'work.local'!='inspire.local'。 – Barmar

+0

你是完全正确的,但那是我在我的设置中隐藏真实姓名的失败尝试。在那些真正的文件上匹配。我纠正它以避免混淆。谢谢你指出,tho。 – Fernando

回答

0

hosts文件的语法应为:

127.0.0.1 inspire.local dev.shop 

所有别名的IP必须在同一行。这与Apache没有任何关系,它一般是由系统解析/etc/hosts

+0

我尝试过,但没有区别。然而,仍然不错的提示并不知道你可以把它们全部放在一行中。谢谢! :d – Fernando

0

想通了。

NameVirtualHost *:80 

原来NameVirtualHost决定了VirtualHosts将如何回升。所以在我的情况下,两个Virtualhosts被宣布是这样的:

<VirtualHost 127.0.0.1:80> 

不匹配我的NameVirtualHost于是就用默认的第一个。

我改变他们完全匹配,像这样:

<VirtualHost *:80> 

而现在他们的工作。

该死的。

希望这可以帮助其他人。