Linux
具有多個域的虛擬主機不提供正確的 DocumentRoot
執行 CentOS 6、Apache。
我的 httpd.conf 中有以下內容:
<VirtualHost *:80> DocumentRoot /var/www/html ServerName domain1.example ServerAlias www.domain1.example </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/domain2 ServerName domain2.example ServerAlias www.domain2.example </VirtualHost>
每當我訪問
domain2.example
(或www.domain2.example
)時,都會顯示我domain1.example
。編輯:更多資訊來自
httpd.conf
Listen 80 #NameVirtualHost *:80
我檢查過的事情:
- Apache 已重新啟動
- 用於
domain1.example
並domain2.example
指向相同 IP的 DNS我錯過了什麼?
解決方案:
正如帕特里克指出的那樣,在 Apache 2.2 中,
NameVirtualHost
使用多個VirtualHost
s 時需要。這裡的解決方案是取消註釋中的行httpd.conf
:#NameVirtualHost *:80
到:
NameVirtualHost *:80
由於您只使用 Apache 2.2,因此您絕對需要使用該
NameVirtualHost
指令以讓 Apache 知道您有多個不同名稱但具有相同 IP 的網站。如本文件所述,該指令在 Apache 2.3 中已棄用:httpd.apache.org/docs/2.4/mod/core.html#namevirtualhost
在 2.3.11 之前,NameVirtualHost 需要指示伺服器特定 IP 地址和埠組合可用作基於名稱的虛擬主機。在 2.3.11 及更高版本中,任何時候在多個虛擬主機中使用 IP 地址和埠組合時,都會自動為該地址啟用基於名稱的虛擬主機。
對於您的版本,基於配置名稱的虛擬主機的指南在這裡: http ://httpd.apache.org/docs/2.2/vhosts/name-based.html#using