先前於研究 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/
以上的設定,於網頁瀏覽器送出連線的時候,Apache 就會跑去 /usr/local/www/apache22/vhosts 裡面找相對應網址的資料夾,同理可推我們或許可以設定為 /home0/<username>/public_html 之類的設定。
雖然應該不太常會用到,還是給各位參考一下~


