www 與非 www URL 的選擇

網站所有者經常會問這樣一個問題:是選擇“www”(www.example.com)還是“非 www”(example.com)的 URL。本文提供了一些關於何種選擇最佳的建議。

什麼是域名?

在 HTTP URL 中,緊跟在 http://https:// 後面的第一個子字串稱為域名。該域名託管在存放文件的伺服器上。

伺服器不一定是物理機器:多臺伺服器可以位於同一臺物理機器上。或者,一臺伺服器可以由多臺機器處理,它們協同工作以產生響應或在此之間平衡請求負載。關鍵在於,從語義上講,一個域名代表一個伺服器

那麼,我的網站必須選擇其中之一嗎?

  • 是的,您需要選擇一個並堅持使用。選擇哪個作為您的規範位置由您決定,但一旦選擇,就請堅持。這將使您的網站對使用者和搜尋引擎更加一致。這包括始終連結到所選的域名(如果您在網站中使用相對 URL,這應該不難),並且始終共享相同的域名連結(透過電子郵件/社交網路等)。
  • ,您可以同時擁有兩個。重要的是您要保持連貫和一致,確定哪個是官方域名。此官方域名稱為規範名稱。您所有的絕對連結都應使用它。但即便如此,您仍然可以使另一個域名正常工作:HTTP 允許兩種技術,以便使用者或搜尋引擎清楚哪個域名是規範的,同時允許非規範域名工作並提供預期的頁面。

所以,請選擇您的其中一個域名作為規範域名!下面有兩種技術可以使非規範域名仍然正常工作。

規範化 URL 的技術

有不同的方法可以選擇哪個網站是規範的。

使用 HTTP 301 重定向

在這種情況下,您需要配置接收 HTTP 請求的伺服器(對於“www”和“非 www” URL 來說,這很可能是同一個伺服器),以便對任何訪問非規範域名的請求響應一個合適的 HTTP 301 響應。這將把嘗試訪問非規範 URL 的瀏覽器重定向到其對應的規範 URL。例如,如果您選擇使用“非 www” URL 作為規範型別,則應將所有“www” URL 重定向到其不帶“www”的對應 URL。

示例

  1. 伺服器收到一個對 http://www.example.org/whaddup 的請求(當規範域名為 example.org 時)。
  2. 伺服器以 301 狀態碼和 Location 頭部 Location: http://example.org/whaddup 進行響應。
  3. 客戶端向規範域名下的位置發出請求:http://example.org/whaddup

HTML5 boilerplate 專案 提供了一個關於如何配置 Apache 伺服器將一個域名重定向到另一個域名的示例。

可以在頁面中新增一個特殊的 HTML <link> 元素,以指示頁面的規範地址。這不會影響頁面的真人讀者,但會告訴搜尋引擎爬蟲頁面實際在哪裡。這樣,搜尋引擎就不會多次索引同一個頁面,從而避免其被視為重複內容或垃圾郵件,甚至不會導致您的頁面在搜尋引擎結果頁面中被移除或排名降低。

新增此類標籤時,您會為兩個域名提供相同的內容,並告知搜尋引擎哪個 URL 是規範的。在上面的示例中,http://www.example.org/whaddup 將會提供與 http://example.org/whaddup 相同的內容,但在頭部會額外新增一個 <link> 元素。

html
<link href="http://example.org/whaddup" rel="canonical" />

與前一種情況不同,瀏覽器歷史記錄會將非 www 和 www URL 視為獨立的條目。

讓您的網頁同時支援兩者

透過這些技術,您可以配置伺服器正確響應帶 www 字首和不帶 www 字首的域名。這樣做是明智的,因為您無法預測使用者會在瀏覽器的位址列中輸入哪個 URL。關鍵在於選擇您希望用作規範位置的型別,然後將另一種型別重定向到它。

決定規範域

這是一個非常主觀的話題——它可能被視為一個“詳盡討論”(bikeshedding)問題。如果您想深入瞭解,這裡有一些資源:

另見