Apache-2.2

Apache2 VirtualHosts 和萬用字元子域

  • August 6, 2013

有沒有辦法為單個域設置一個包羅萬象的(用於子域)虛擬伺服器,我有幾個預定義的子域。

IE:

webmail.example.com -> 指向“/var/web/roundcube”

beta.example.com -> 指向“/var/web/beta/”

example.com 和所有其他子域 -> 指向“/var/web/www”

<VirtualHost *:80>
   ServerName webmail.example.com
   ServerAdmin webmaster@example.com

   DocumentRoot /var/web/roundcube
   <Directory /var/web/roundcube/>
       ...
   </Directory>
...
</VirtualHost>

<VirtualHost *:80>
   ServerName beta.example.com
   ServerAdmin webmaster@example.com

   DocumentRoot /var/web/beta
   <Directory /var/web/beta/>
       ...
   </Directory>
...
</VirtualHost>

<VirtualHost *:80>
   ServerName example.com
   ServerAlias *.example.com
   ServerAdmin webmaster@example.com

   DocumentRoot /var/web/www
   <Directory /var/web/www/>
       ...
   </Directory>
...
</VirtualHost>

這應該工作得很好,這絕對是做你想做的事情的正確方法!

  • 在您的範例中,載入順序並不重要,因為這些虛擬主機涵蓋了您為其提供內容的所有域。

    • 與 a 完全匹配的ServerNameorServerAlias將勝過萬用字元ServerAlias,無論它們載入的順序如何。
    • 載入順序對於以任何方式不匹配任何ServerNameorServerAlias指令的請求(例如,在 URL 中使用 IP 而不是主機名)的請求很重要——這些請求將由第一個要載入的虛擬主機提供服務。

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