如何使用 rel="canonical" 和其他方法指定標準網址

如要為 Google 搜尋重複或相似的網頁指定標準網址,您可以透過多種方法指定偏好網址。這些方法依照對標準化的影響程度,排序如下:

  • 重新導向:強烈的信號,表示重新導向的目標應成為標準網址。
  • rel="canonical" link 註解:強烈的信號,表示指定的網址應成為標準網址。
  • 納入 Sitemap:微弱的信號,可協助 Sitemap 包含的網址成為標準網址。

請注意,這些方法可以疊加,因此搭配使用會更有效率。 也就是說,當您使用兩種以上的方法時,您的偏好標準網址就更有機會出現在搜尋結果中。

我們鼓勵您採用這些方法,但並非必要。即便沒有指定偏好的標準網址,您的網站依然可能有不錯的表現。這是因為如果您不指定標準網址,Google 會客觀認定哪個版本的網址最適合在 Google 搜尋中向使用者顯示

指定標準網址的原因

通常指定標準偏好網址並不重要,但您可能基於一些原因,而必須明將一組重複或相似的網頁中的標準網頁明確告知 Google:

  • 為了指定要顯示在搜尋結果中的網址。 例如,您可能想讓使用者透過 https://www.example.com/dresses/green/greendress.html 進入綠色洋裝商品網頁,而非 https://example.com/dresses/cocktail?gclid=ABCD
  • 為了整合相似或重複網頁的信號。這可協助搜尋引擎將個別網址的信號 (例如造訪連結) 整合成您偏好的單一網址。這表示從其他網站到 https://example.com/dresses/cocktail?gclid=ABCD 的信號會整合到指向 https://www.example.com/dresses/green/greendress.html 的連結 (如果該網址成為標準網址)。
  • 為了簡化特定內容的追蹤指標。如果使用多個不同的網址,會難以針對特定部分內容取得整合性指標。
  • 為了避免耗時檢索重複網頁。您會希望 Googlebot 在檢索您的網站時盡可能找出最多內容,因此最好將時間花在檢索最新網頁或有更新內容的網頁,而非檢索相同內容的重複版本。

最佳做法

所有標準化方法均適用以下最佳做法:

  • 請勿將 robots.txt 檔案用於標準化。
  • 請勿使用網址移除工具執行標準化,以免系統從搜尋結果中隱藏同一網址的「所有」版本。
  • 無論使用何種標準化做法,請勿為相同網頁指定不同的標準網址。舉例來說,請勿在 Sitemap 中為網頁指定一個網址,卻又使用 rel="canonical" 為同樣的網頁指定另一個網址。
  • 請勿將網址片段指定為標準網址,因為 Google 通常不支援網址片段
  • 不建議使用 noindex 禁止在單一網站中選取標準網頁,因為這會使 Google 搜尋結果完全無法顯示該網頁。建議採用 rel="canonical" link 註解做為解決方案。
  • 使用 hreflang 元素時,請務必指定相同語言的標準網頁,如果沒有這類網頁,請指定一個使用最合適的替代語言的標準網頁。
  • 連結至網站內部網頁時,請連結至標準網址,而非重複網址。 如果能一致地連結至您認定的標準網址,有助於 Google 瞭解您的偏好。

標準化方法的比較

下表比較了各種標準化方法,重點說明在不同情況下,在維護和效果方面的優勢和劣勢。

方法和說明
rel="canonical" link 元素

在所有重複網頁的程式碼中加入 <link> 元素,指向標準網頁。

優點:
  • 可對應的重複網頁數量不限。
缺點:
  • 如果網站規模較大,或是其中的網址經常變更,對應關係的維護作業會變得複雜。
  • 僅適用於 HTML 網頁,不適用於 PDF 這類檔案;您可以針對這類檔案改用 rel="canonical" HTTP 標頭。
rel="canonical" HTTP 標頭

在網頁回應中傳送 rel="canonical" 標頭。

優點:
  • 網頁檔案不會變大。
  • 可對應的重複網頁數量不限。
缺點:
  • 如果網站規模較大,或是其中的網址經常變更,對應關係的維護作業會變得複雜。
Sitemap

在 Sitemap 指定標準網頁。

優點:

  • 易於實作及維護,特別是對大型網站。

缺點:

  • Google 仍須根據您在 Sitemap 中宣告的所有標準網頁判別相關聯的重複網頁。
  • 對 Google 來說,Sitemap 的信號效力不及 rel="canonical" 對應做法。
重新導向 使用重新導向告知 Googlebot,重新導向的網址是優於指定網址的版本。只有在要淘汰重複的網頁時,才適用這個方法。
AMP 版本 如果其中一個網頁版本是 AMP 網頁,請按照 AMP 指南的說明,指出標準網頁和 AMP 版本。

RFC 6596 中所述,Google 支援明確的 rel canonical link 註解。系統會忽略建議網頁替代版本的 rel="canonical" 註解;具體來說,含有 hreflanglangmediatype 屬性的 rel="canonical" 註解不會用於標準化。請改用適當的 link 註解來指定網頁替代版本,例如以link rel="alternate" hreflang 做為語言和國家/地區註解。

您可以透過下列兩種方式提供 rel="canonical" link 註解:

建議您選擇其中一種方法進行,雖然兩種方法都支援,但同時使用兩種方法較容易出錯。舉例來說,您可能在 HTTP 標頭中提供一個網址,然後在 rel="canonical" link 元素中提供另一個網址。

rel="canonical" link 元素 (又稱為「標準化元素」) 是 HTML 的 head 部分中使用的元素,用來指出另一個網頁與該頁面相符的內容。

假設有多個網址都能存取相同的內容,而你想將其中的 https://example.com/dresses/green-dresses 指定為標準網址,請按照下列步驟操作:

  1. 在重複網頁的 <head> 區段中加入包含 rel="canonical" 屬性的 <link> 元素,指向標準網頁。例如:
    <html>
    <head>
    <title>Explore the world of dresses</title>
    <link rel="canonical" href="https://example.com/dresses/green-dresses" />
    <!-- other elements -->
    </head>
    <!-- rest of the HTML -->
  2. 如果標準網頁有不同網址的行動版本,請加入指向行動版網頁的 rel="alternate" link 元素:
    <html>
    <head>
    <title>Explore the world of dresses</title>
    <link rel="alternate" media="only screen and (max-width: 640px)"  href="https://m.example.com/dresses/green-dresses">
    <link rel="canonical" href="https://example.com/dresses/green-dresses" />
    <!-- other elements -->
    </head>
    <!-- rest of the HTML -->
  3. 新增任何適合該網頁的 hreflang 或其他元素。

搭配 rel="canonical" link 元素時請採用絕對路徑,不要使用相對路徑。雖然 Google 支援相對路徑,但長期下來可能會造成問題 (例如,您無意間允許測試網站受到檢索),因此我們不建議這麼做。

良好示例https://www.example.com/dresses/green/greendress.html

錯誤示例/dresses/green/greendress.html

rel="canonical" link element 只有出現在 HTML 的 <head> 部分中系統才會接受,因此請至少確保 <head> 部分是有效的 HTML

如果您使用 JavaScript 新增 rel="canonical" link 元素,請務必正確插入標準連結元素

rel="canonical" HTTP 標頭

如果能變更伺服器設定,您可以不使用 HTML 元素,而是依照 RFC5988 定義,使用 link HTTP 回應標頭搭配 rel="canonical" 目標屬性,為搜尋引擎可支援的文件 (包括 PDF 檔案等非 HTML 文件) 指定標準網址。

Google 僅針對網頁搜尋結果支援這個方法。

如果您以多種檔案格式 (例如 PDF 或 Microsoft Word) 發布內容,且每個內容都採用各自的網址,您可以傳回 rel="canonical" HTTP 標頭,告知 Googlebot 何者是非 HTML 檔案的標準網址。舉例來說,如要指出 .docx 版本的 PDF 版為標準網址,您可以為內容的 .docx 版本新增這個 HTTP 標頭:

HTTP/1.1 200 OK
Content-Length: 19
...
Link: <https://www.example.com/downloads/white-paper.pdf>; rel="canonical"
...

rel="canonical" link 元素一樣,請在 rel="canonical" HTTP 標頭中使用絕對網址,並依據 RFC2616 的規範,網址兩端只能加上雙引號。

使用 Sitemap

您可以為每個網頁挑選一個標準網址,然後透過 Sitemap 提交。Sitemap 中列出的所有網頁都代表您建議的標準網頁,Google 會根據內容相似度判斷是否有重複的網頁,以及哪些網頁發生重複。

在 Sitemap 中提供偏好的標準網址,是定義大型網站標準網址的簡易方法,Sitemap 也很適合用來告知 Google,您認為自己網站上的哪些網頁最重要。

使用重新導向

如果您要淘汰現有的重複網頁,請使用這個方法。所有重新導向方法 (301302 重新導向、meta-refresh 和 JavaScript 重新導向) 對 Google 搜尋的結果相同,不過根據重新導向方法不同,搜尋引擎發現網頁所需的時間也有所差異。

為取得最快速的效果,請使用 3xx HTTP (又稱為「伺服器端」) 重新導向。

如果使用者可以透過多種方式進入你的網頁:

  • https://example.com/home
  • https://home.example.com
  • https://www.example.com

選擇其中一個網址做為標準網址,然後使用重新導向將其他網址的流量傳送到您偏好的網址。

其他指標

除了明確提供的方法外,Google 還會使用一組標準化的信號,這些信號通常是依據網站設定來選擇,偏好採用 HTTPS (而非 HTTP),以及 hreflang 叢集中的網址。

使用 HTTPS 網址 (而非 HTTP 網址) 做為標準網址

認定網頁的標準網址時,Google 偏好 HTTPS 網頁而非 HTTP 網頁,除非有下列問題或衝突情形:

  • HTTPS 網頁含有無效的安全資料傳輸層 (SSL) 憑證。
  • HTTPS 網頁含有不安全的相依關係 (圖片除外)。
  • HTTPS 網頁會將使用者重新導向 HTTP 網頁,或透過 HTTP 網頁重新導向使用者。
  • HTTPS 網頁中含有指向 HTTP 網頁的 rel="canonical" link

根據預設,我們的系統偏好 HTTPS 網頁 (而非 HTTP 網頁),不過您仍可採取下列任一做法,確保這種行為不會遭到覆寫:

  • 新增重新導向,從 HTTP 網頁指向 HTTPS 網頁。
  • 新增 rel="canonical" link,從 HTTP 網頁指向 HTTPS 網頁。
  • 導入 HSTS機制。

請勿採用下列做法,以免 Google 誤將 HTTP 網頁當成標準網頁:

  • 使用無效的傳輸層安全標準 (TLS)/安全資料傳輸層 (SSL) 憑證,以及 HTTPS 至 HTTP 重新導向。原因是這些做法很有可能造成 Google 偏好 HTTP 網頁,即使導入 HTTP 嚴格傳輸安全性機制也無法覆寫這項偏好設定。
  • 請勿在 Sitemap 或 hreflang 註解 (而非 HTTPS 版本) 中加入網頁的 HTTP 版本。
  • 避免為錯誤的主機名稱版本採用 SSL/TLS 憑證,例如 example.com 提供 subdomain.example.com 的憑證。憑證必須與完整網站網址相符,或是可供單一網域中多個子網域使用的萬用憑證。

hreflang 叢集中的偏好網址

為協助進行網站的本地化工作,基於標準化目的,Google 偏好採用 hreflang 叢集中的網址。舉例來說,如果 https://example.com/de-de/catshttps://example.com/de-ch/cats 透過 hreflang 註解相互指向對方,而不是指向 https://example.com/de-at/cats,Google 會偏好選擇 de-dede-ch 為標準網址,而不是沒有出現在 hreflang 叢集中的 /de-at/ 網頁。

進一步瞭解如何排解及修正標準化問題