如何使用 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 元素
|
在所有重複網頁的程式碼中加入
|
||
rel="canonical" HTTP 標頭
|
在網頁回應中傳送
|
||
Sitemap |
在 Sitemap 指定標準網頁。
|
||
重新導向 | 使用重新導向告知 Googlebot,重新導向的網址是優於指定網址的版本。只有在要淘汰重複的網頁時,才適用這個方法。 | ||
AMP 版本 | 如果其中一個網頁版本是 AMP 網頁,請按照 AMP 指南的說明,指出標準網頁和 AMP 版本。 |
使用 rel="canonical"
link
註解
如 RFC 6596 中所述,Google 支援明確的 rel
canonical link
註解。系統會忽略建議網頁替代版本的 rel="canonical"
註解;具體來說,含有 hreflang
、lang
、media
和 type
屬性的 rel="canonical"
註解不會用於標準化。請改用適當的 link
註解來指定網頁替代版本,例如以link
rel="alternate"
hreflang
做為語言和國家/地區註解。
您可以透過下列兩種方式提供 rel="canonical"
link
註解:
建議您選擇其中一種方法進行,雖然兩種方法都支援,但同時使用兩種方法較容易出錯。舉例來說,您可能在 HTTP 標頭中提供一個網址,然後在 rel="canonical"
link
元素中提供另一個網址。
rel="canonical"
link
元素
rel="canonical"
link
元素 (又稱為「標準化元素」) 是 HTML 的 head
部分中使用的元素,用來指出另一個網頁與該頁面相符的內容。
假設有多個網址都能存取相同的內容,而你想將其中的 https://example.com/dresses/green-dresses
指定為標準網址,請按照下列步驟操作:
-
在重複網頁的
<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 -->
-
如果標準網頁有不同網址的行動版本,請加入指向行動版網頁的
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 -->
-
新增任何適合該網頁的
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,您認為自己網站上的哪些網頁最重要。
使用重新導向
如果您要淘汰現有的重複網頁,請使用這個方法。所有重新導向方法 (301
和 302
重新導向、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/cats
和 https://example.com/de-ch/cats
透過 hreflang
註解相互指向對方,而不是指向 https://example.com/de-at/cats
,Google 會偏好選擇 de-de
和 de-ch
為標準網址,而不是沒有出現在 hreflang
叢集中的 /de-at/
網頁。
進一步瞭解如何排解及修正標準化問題。