Apache-2.2
www.example.com 和 example.com 都需要 2 個虛擬主機嗎?
我有 2 個問題 - Apache 的 conf 文件中的 ServerName 是否以 www 開頭有關係嗎?另外,如果我有以下虛擬主機:
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
我是否還應該擁有以下內容:
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Apache
ServerName
指令用於 Apache 生成的預設(錯誤)消息和標頭等。有些人更喜歡讓那些與網站訪問者使用的主機名相匹配。然後,您需要為每個 URL 主機名創建一個 VirtualHost。
其他人更喜歡較少的 VirtualHost 塊,並使用該
ServerAlias
指令為虛擬主機分配備用名稱(當所有名稱都可以使用相同的內容時)。<VirtualHost *:80> ServerName example.com ServerAlias www.example.com example.net www.example.net ... </VirtualHost>
據我所知,您為 ServerName 使用的名稱主要是一個偏好問題。有些人喜歡裸域,有些人喜歡 www 記錄。
而且,正如@HåkanLindqvist 評論的那樣,您還可以決定使用單個 URI 來發布您的網站並將您的其他域重定向到該站點:
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/example.com ... </VirtualHost> <VirtualHost *:80> ServerName example.com Redirect "/" "http://www.example.com" </VirtualHost>
(應該注意的是,您應該為您的站點設置 TLS 證書並使用並重定向到 HTTPS。)