Apache-2.2

Virtualhost - 定義子域,每個子域都有單獨的文件夾

  • July 9, 2013

我目前有一個主要域:mydomain.com

這工作正常。

我現在想做的是通過 mydomain.conf 文件添加一個子域,這樣我就可以擁有:

sub.mydomain.com

我嘗試了以下方法 - 但是結果是我在 sub.mydomain.com 上提供來自 mydomain.com 的內容:

# MY MAIN DOMAIN
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias *.mydomain.com
DocumentRoot /var/www/mydomain.com/html
</VirtualHost>

# DEFINING MY SUBDOMAIN
<VirtualHost *:80>
ServerName sub.mydomain.com
ServerAlias sub.mydomain.com
DocumentRoot /var/www/sub/html/
</VirtualHost> 

我自然地在以下位置為子域創建了 DocumentRoot:DocumentRoot /var/www/sub/html/

在我的 DNS 供應商處,我為兩者創建了一個 A 記錄:sub.mydomain.com www.sub.mydomain.com - 並將其指向我的伺服器 IP。(與 mydomain.com 指向的 IP 相同)

我正在執行 Centos 6.2。

任何想法這裡有什麼問題?

問題是你的第一個 VirtualHost 有這條線

ServerAlias *.mydomain.com

這匹配所有子域。由於 VirtualHosts 是按照它們在配置文件中出現的順序進行解析的,因此 Apache 會找到這個 VH 並且永遠不會繼續查看下一個 VH。

換句話說,您需要移動這兩個域,以便子域的 VirtualHost 條目出現在主域的條目之上。

Your virtual host entry should be like this. Hope it will help you.

<VirtualHost mydomain.dev:80>
    ServerName www.yourdoamin.com
    ServerAlias yourdomain.com *.yourdomain.com
    DocumentRoot /var/www/path_of_folder
</VirtualHost>

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