Apache VirtualHost 虛擬主機設定
為了方便管理一些設有Subdomain(子域名)的網站,特別將這些網站目錄全部移到同一個資料夾。此時我們需要設定Apache的VirtualHost(虛擬主機),和DNS。因為多個網站共用一個IP位址,所以使用最簡單的Name-based,如果有多個IP位址則可以使用IP-based。因為網路上寫的設定方法很多,我只簡單記錄幾個步驟和要稍微留意一下的地方。
先到DNS設定Subdomain,子域名為test︰
abc IN A 123.123.123.123
test IN CNAME abc
如果Apache為1.X版,VirtualHost直接設定在httpd.conf,如為2.X版,則另外設定在httpd-vhosts.conf。先打開虛擬主機的模組,在httpd.conf的設定為︰
LoadModule vhost_alias_module modules/mod_vhost_alias.so
2.X版同樣在httpd.conf找到此設定︰
Include conf/extra/httpd-vhosts.conf
假設使用的DocumentRoot在C:\apache\www\
,想將所有設定Subdomain的網站搬到C:\apache\www2\
,記得一定要先在httpd.conf
設定C:\apache\www2\
資料夾的讀取權限,否則只設定VirtualHost的DocumentRoot是無效的,會出現403 Forbidden(禁止)的畫面。網站資料夾為test,目錄權限設為︰
<Directory "C:/apache/www2/test">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
AllowOverride All
請記得務必加上,如果未設定或設為None,將會忽略.htaccess
設定。
再來就是VirtualHost的設定,第一行千萬不要被忽略,否則就沒效果了︰
NameVirtualHost *:80
Subdomain為test.abc.com
,就設為︰
<VirtualHost *:80>
DocumentRoot "C:/apache/www2/test"
ServerName test.abc.com
</VirtualHost>
error和access log可自行選擇要不要加入設定,最後重新啟動Apache,此時DNS的TTL如果也已經生效,可自行測試是否設定無誤。