Apache-2.2

CNAME 和虛擬主機問題

  • November 10, 2012

我正在使用 Apache,並且我有一個 CNAME DNS 記錄

sub2.sub1.domain1.com 指向 sub1.domain1.com

我有一個 A DNS 記錄

sub1.domain1.com 指向IP。

然後在我的 httpd.conf 文件中,我有:

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

<VirtualHost *:80>
       ServerName sub1.domain.com
       DocumentRoot /domain1/sub1/www
</VirtualHost>

但是我似乎遺漏了一些東西,因為當您訪問 sub2.sub1.domain1.com 時,它會向您顯示 domain1.com 的頁面。當您訪問 sub1.domain1.com 時,它會顯示 sub1 的正確頁面。

雖然您有 CNAME 記錄將 sub2.sub1.domain1.com 指向正確的伺服器,但 apache 伺服器可能服務於多個網站。

當一個 http 請求進來時,apache 根據ServerName檢查 URL以確定要提供哪個網站。如果有任何其他名稱指向同一網站,請將它們放在ServerAlias中。

在您的 httpd.conf 中,您必須為 sub2.sub1.domain1.com添加ServerAlias

<VirtualHost *:80>
   ServerName sub1.domain.com
   ServerAlias sub2.sub1.domain1.com
   DocumentRoot /domain1/sub1/www
</VirtualHost>

此外,httpd.conf 中的第一個VirtualHost聲明用作預設值。當一個 http 請求進來並且不匹配任何ServerNameServerAlias時,預設站點將被發送出去。

引用自:https://serverfault.com/questions/447315