先前於研究 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 之類的設定。
雖然應該不太常會用到,還是給各位參考一下~