httpd.conf:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
#DocumentRoot "D:\sites"
VirtualDocumentRoot "D:\sites\%0"
<Directory D:\sites">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
在 D:\www\ 裡面新增一個 aaa.example.com 資料夾,
就等於建好了一個 aaa.example.com 的網站。
請求網頁: http://aaa.example.com/index.html
會返回:D:\sites\aaa.example.com/index.html
在 D:\sites 下面的資料夾,就是一個網站的根目錄
進階用法:
VirtualDocumentRoot "D:/sites/%3+/%2.1/%2.2/%2.3/%2"
%:代表後面接的是可變動的內容。
小數點前面的數字:整個主機名稱的第幾個字
小數點後面的數字:承上,該字裡面的第幾個字母。
0:代表全部字串。
+:代表某個起點之後的所有字串
本例題範例:
請求網頁:http://www.domain.example.com/directory/file.html
會返回:D:\sites\example.com\d\o\m\domain\directory\file.html
說明:
完整主機名稱是 www.domain.example.com
第一組 %3+ => 第3個字以後的全部。第3個字是example,所以這組是 example.com
第二組 %2.1 => 第2個字裡面的第1個字母,所以是 domain 裡的 d
第三組 %2.2 => 第2個字裡面的第2個字母,所以是 domain 裡的 o
第四組 %2.3 => 第2個字裡面的第3個字母,所以是 domain 裡的 m
第五組 %2 => 第2個字,所以是 domain
合起來就變成上面那樣的目錄結構。
另外,我自己實驗的結果,這樣的標籤好像沒用:
<Directory D:\sites\%0>
所以無法針對每個站台做各別設定。
只能用 <Directory D:\sites>
延伸閱讀:
Apache Module mod_vhost_alias
Apache Virtual Host 最簡單的做法 (含 DNS,讓你建目錄等於建虛擬主機 )
沒有留言:
張貼留言