Apache mod_vhost_alias 大量虛擬主機設定

先前於研究 suPHP 時,有老師提出自動三級域名自動轉址之服務,例如 test1.example.com 會自動連結與 www.example.com/~test1 的網頁,而不需要做額外的 Virtual Host 或 alias 設定,如此一來各單位若有需要就不必再分別註冊 DNS record,而只需要註冊一筆 wildcard DNS 即可,例如  * CNAME example.com. 即可。

後來發現,Apache 不愧為一包山包海的軟體,連這樣的功能都有內建模組,就是 mod_vhost_alias 模組。將其啟動之後,可以於目錄下建立以下的設定檔:

<VirtualHost *:80>
        UseCanonicalName Off
        VirtualDocumentRoot /usr/local/www/apache22/vhosts/%1

<Directory /usr/local/www/apache22/vhosts/*>
            AllowOverride All
            Options MultiViews +Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
            <Limit GET POST OPTIONS>
                Order allow,deny
                Allow from all
            </Limit>
            <LimitExcept GET POST OPTIONS>
                Order deny,allow
                Deny from all
            </LimitExcept>
</Directory>

</VirtualHost>

其中 mod_vhost_alias 透過 VirtualDocumentRoot  設定導向之網頁目錄。

%1  代表網址的第一個部份,以 test.example.com 為例,解析出之資料夾即為 test,詳細用法可以參考 http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html 

以上的設定,於網頁瀏覽器送出連線的時候,Apache 就會跑去 /usr/local/www/apache22/vhosts 裡面找相對應網址的資料夾,同理可推我們或許可以設定為 /home0/<username>/public_html 之類的設定。

雖然應該不太常會用到,還是給各位參考一下~

Apache mod_vhost_alias 大量虛擬主機設定

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料