Apache-2.2

www.example.com 和 example.com 都需要 2 個虛擬主機嗎?

  • April 16, 2021

我有 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>

ApacheServerName指令用於 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。)

引用自:https://serverfault.com/questions/1060574