2014-05-14 229 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> 

而現在他們的工作。

該死的。

希望這可以幫助其他人。