2009-02-17 210 views
1

上次我嘗試在我的開發機器上設置基於名稱的虛擬主機,我剛放棄並將網站映射到不同的端口。這一次,我正在努力做到這一點:)!基於Apache名稱的虛擬主機

我正確註冊DNS條目,併發送兩個不同的頁眉到服務器:

Host: dev.site1.com 
Host: dev.site2.com 

但是,Apache是​​讓我很難與測繪dev.site2.comdev.site1 .COM

這裏是我的瘦身配置:

Listen 80 
ServerName localhost:80 
NameVirtualHost *:80 

<VirtualHost *> 
    ServerName dev.site1.com 
    DocumentRoot /www/site1 
</VirtualHost> 

<VirtualHost *> 
    ServerName dev.site2.com 
    DocumentRoot /www/site2 
</VirtualHost> 

我試過ç ombos如(無效果):

ServerName site1.com 
ServerName site2.com 

ServerName site1.com 
ServerAlias *.site1.com site1 
ServerName site2.com site2 
ServerAlias *.site2.com site2 

我高興地運行的Apache 2.2,並希望有一些,其與同解決之前,可以幫助我。

回答

4

我平時也指定要在虛擬主機的指令的端口,但不知道這可能是問題:

<VirtualHost *:80> 
    ServerName dev.site2.com 
    DocumentRoot /www/site2 
</VirtualHost> 

(我甚至指定通常是爲了將IP地址,以確保它是真的在聽的權利一個在服務器在某個時候獲得額外的一個)。

其實我在documentation只注意到這條線:

注意參數的指令必須參數到NameVirtualHost指令完全匹配。

所以問題可能是你用一個端口指定你的NameVirtualHost,但是VirtualHost指令沒有一個最終不會使它們匹配。

4

我注意以下幾點:

  1. 您的服務器名稱爲localhost:81 - 應該不是這個爲localhost:80?
  2. 兩個VirtualHosts DocumentRoot的是相同的 -/WWW/site1的 - 這樣會起到相同的頁面,即使它的工作原理

試圖創建第二個虛擬主機獨立的DocumentRoot。

作爲一個有點幫助,這是我的(工作,修剪,URL的重命名)的httpd.conf:

NameVirtualHost * 

<VirtualHost *> 
     DocumentRoot /var/www/site1 
     ServerName  my.website.co.nz 
     ServerAlias  www.my.website.co.nz 
</VirtualHost> 


<VirtualHost *> 
     DocumentRoot /var/www/joker 
     ServerName  another.site.co.nz 
     ServerAlias  www.another.site.co.nz 
</VirtualHost> 

快樂狩獵!

編輯:MrTopf有一個好點。 NameVirtualHost必須與VirtualHost指令完全匹配。請注意我是如何爲每一個添加一個星號的,而您的NameVirtualHost爲*:80,VirtualHosts爲*。

+0

對不起,我拼錯了第二個文檔根目錄。是的,這正是我正在做的,但是一切似乎只是指向第一個VHost入口。 – 2009-02-17 00:32:16

+0

你可以發佈你的整個配置嗎? – 2009-02-17 00:46:17