控制 Apache 預設的虛擬主機
1. 引言
當你在一台伺服器上用虛擬主機寄存多個網站,問題有時會出現,例如在主機設置值中打錯字。所得出的結果也許是所需的內容被首台虛擬主機的內容所取代。由於站主可能會很氣忿,這種情況並不理想。顯示一個通用的頁面會較可取。
2. 問題
當 Apache 為每個請求尋找適合的虛擬主機時,它會按主機被定義的次序逐一檢查。假如到了清單的底部仍沒有配對,它便會採用首台虛擬主機。
3. 解決方法
新增一台百搭的虛擬主機,讓它替代首台主機。
4. 利用 httpd.conf 建立虛擬主機
在 /etc/httpd/conf/httpd.conf 檔案的底部加入一個虛擬主機的定義是插入虛擬主機的最明顯一個做法。
加插首台主機時,請在 NameVirtualHost:80 這一行之後,並在其它虛擬主機的定義之先放入定義。
在底部加入百搭的虛擬主機時,請確定它以下沒有其它主機的定義,因為這些都不會生效。
5. 採用虛擬主機檔
第二個將虛擬主機新增到 Apache 設置的方法,就是利用虛擬主機檔。這個方法在 ApacheVhostDir 裡有更詳細描述。
新增首台主機時,請將檔案命名為一個於目錄清單中會首先出現的檔名,例如 0Default.conf。
新增百搭的虛擬主機時,請將檔案命名為一個永遠顯示於最尾的機名,例如 zDefault.conf。
6. 首台虛擬主機
作為首台虛擬主機,ServerName 應該是一個實際上不被採用的特定名稱。最簡單的話可以是:
<VirtualHost *:80> ServerName fail </VirtualHost>
7. 最後一台虛擬主機
作為一台百搭的虛擬主機,它應該能配對所有名稱。你可以這樣做:
<VirtualHost *:80> ServerAlias * </VirtualHost>
8. 重新啟動 Apache
要讓你的改動生效,請重新啟動 Apache。
service httpd graceful
這頁的英文版本由 Ed Heron 建立。
Translation of revision 9