前陣子一家賣寢具的電商客戶問我:「為什麼 Search Console 說我有 3,000 多個網頁沒被索引?我們明明只有 400 個商品。」
查下去才發現,每個商品頁會因為選顏色、選尺寸、從廣告點進來帶的追蹤參數,衍生出好幾個不同的網址。同一條「天絲床包」,網站上就有 /product/123、/product/123?color=gray、/product/123?size=queen、/product/123?utm_source=facebook 等版本。對 Google 來說,這些是不同的網址,內容卻幾乎一模一樣。
Google 遇到這種情況,會自己挑一個當「正本」。問題是它挑的未必是你想要的那個。canonical 標籤就是讓你主動告訴 Google:這一組裡面,請以這個網址為準。
Canonical 標籤是什麼?
Canonical 標籤(標準網址標籤)是放在網頁 head 區塊的一行 link 標記,rel 屬性寫 canonical,href 填你希望 Google 當作正本的網址。它告訴搜尋引擎:「這一頁的內容和那個網址重複,排名、連結訊號請集中算到那一頁。」
它不會把使用者導走。使用者點進參數網址,看到的還是原本的頁面;只是在 Google 的索引裡,這幾個網址會被歸成一組,由你指定的那個網址代表出現在搜尋結果。
有一點很多人不知道:canonical 是「建議」,不是「指令」。Google 會參考你的標記,但也會看內部連結、Sitemap、轉址、HTTPS 等其他訊號,最後自己決定正本是哪一個。所以設了 canonical 之後,還是要回頭確認 Google 有沒有採用。
哪些情況需要設定 canonical?
只要網站上有「內容相同或高度相似,但網址不同」的頁面,就需要。實務上最常見的是下面幾種,大部分網站至少會遇到其中一兩種。
網址參數。 排序(?sort=price)、篩選、分頁追蹤、UTM 參數、Session ID。這是電商和大型網站最大宗的重複來源。
商品規格變體。 同一件衣服的不同顏色各有一個網址,但描述、圖片大致相同。
同一頁有多種入口。 例如文章同時出現在 /blog/seo-tips 和 /category/seo/seo-tips 兩個路徑下。
協定與網域版本。 http 與 https、有 www 與沒有 www、結尾有沒有斜線。這類問題最好用 301 轉址統一,canonical 當作第二層保險。
內容轉載。 你的文章被合作媒體全文轉載,可以請對方在轉載頁加上指向你原文的 canonical(對方願不願意配合是另一回事)。
自我參照 canonical 要不要設?
要。每一個想被索引的頁面,都建議加上指向自己的 canonical(自我參照)。這樣即使有人在網址後面加了參數連過來,Google 也知道正本是不帶參數的那一個。
我們接手的網站裡,常看到只有「重複頁」有設 canonical,正本頁本身反而沒設。這樣不算錯,但少了一層保護。多數 CMS 和 SEO 外掛都能自動輸出自我參照 canonical,打開就好,不用一頁一頁手動處理。
設定時有幾個原則:
- 使用完整的絕對網址,包含 https 和網域,不要只寫路徑。
- 一頁只放一個 canonical,重複出現時 Google 可能兩個都忽略。
- canonical 指向的網址必須是可以正常開啟、回應 200、沒有被 noindex 的頁面。
- Sitemap 裡只放標準網址,不要把參數網址也放進去。Sitemap 的寫法可以參考 XML Sitemap 設定教學。
如果你的網站是自行開發的系統,canonical 的輸出邏輯要寫進版型裡,例如規定商品頁一律輸出不含參數的網址。這類網站架構面的問題,牽涉到工程端,必要時可以找熟悉 技術 SEO 架構 的團隊一起規劃。
Canonical、301 轉址和 noindex 差在哪?
三者都能處理重複內容,差別在「使用者會不會被導走」和「頁面會不會留在索引裡」。選錯工具,輕則沒效果,重則把好好的頁面從搜尋結果裡拿掉。
| 做法 | 使用者看到什麼 | 搜尋引擎怎麼處理 | 適合情境 |
|---|---|---|---|
| canonical | 原頁面照常顯示 | 建議把訊號合併到正本 | 參數網址、規格變體、多入口 |
| 301 轉址 | 直接被導到新網址 | 舊網址由新網址取代 | 網址改版、http 改 https、合併文章 |
| noindex | 原頁面照常顯示 | 不放進索引,訊號不合併 | 站內搜尋結果頁、會員頁、感謝頁 |
簡單判斷:舊網址不需要再給人看,用 301;兩個網址都要給人看,但只想讓一個出現在搜尋結果,用 canonical;這一頁根本不該出現在搜尋結果,用 noindex。
有一個常見錯誤是 canonical 和 noindex 同時用在同一頁。這等於一邊說「請把訊號算給正本」,一邊說「這頁不要索引」,訊號互相矛盾,Google 可能不照你的意思處理。更完整的技術面檢查,可以搭配 技術 SEO 攻略 一起看。
怎麼確認 Google 有沒有採用你的 canonical?
用 Search Console 的「網址檢查」工具。輸入任一網址後,展開「頁面索引」的詳細資料,會看到兩個欄位:「使用者宣告的標準網址」和「Google 選取的標準網址」。兩個一樣,代表 Google 採用了你的設定;不一樣,就要找原因。
另外在左側選單「網頁」(頁面索引報告)裡,如果看到「重複網頁,Google 選擇的標準網址與使用者不同」這類狀態,點進去就能看到所有沒被採用的網址清單(狀態名稱以 Search Console 實際介面為準)。
Google 不採用的原因,我們遇過最多的是這幾種:
內部連結指向的是參數網址。 你宣告 A 是正本,但全站的選單、麵包屑都連到 B,Google 會覺得 B 才是你真正在用的。
兩頁內容其實差很多。 canonical 只適用於重複或高度相似的頁面。把一篇文章 canonical 到另一篇完全不同主題的文章,Google 多半會忽略。
正本頁有技術問題。 指向的網址會轉址、回應 404,或被 robots.txt 擋住。
Sitemap 放的是另一個版本。 Sitemap 說 B、canonical 說 A,訊號打架。
案例:寢具電商把 3,000 個重複網址收斂
回到開頭的寢具電商。我們做了三件事:商品頁版型一律輸出不帶參數的自我參照 canonical;分類頁的篩選與排序網址,canonical 指向未篩選的分類主頁;Sitemap 重新產生,只保留 400 多個商品主網址和分類頁。
另外把站內選單和商品列表的連結都改成乾淨網址,避免內部連結本身就帶著參數。
大約兩個月後,頁面索引報告裡「重複網頁」相關狀態的數量從 3,000 多筆降到 600 筆左右,而且還在持續減少。商品頁的自然搜尋點擊比改善前同期多了約 22%。Google 不再把爬取資源浪費在一堆重複網址上,真正的商品頁被重新檢索的頻率也變高了。
canonical 不是開關,是你跟 Google 之間的協商。
常見問題
Q:canonical 可以指向別的網域嗎?
可以,這叫跨網域 canonical,常用在內容轉載。例如合作媒體轉載你的文章時,在轉載頁加上指向你原文的 canonical,就能讓原文保有排名。不過這需要對方網站配合設定,你無法從自己網站單方面處理。
Q:分頁的第 2、3 頁要 canonical 到第 1 頁嗎?
一般不建議。第 2 頁之後的內容(列出的商品或文章)跟第 1 頁不同,canonical 到第 1 頁可能讓 Google 忽略後面頁面上的連結。比較常見的做法是每一頁都設自我參照 canonical。
Q:設了 canonical,被指向的頁面還會出現在搜尋結果嗎?
通常不會。Google 採用你的 canonical 之後,搜尋結果多半只顯示正本網址,重複的網址會被歸在同一組裡。但這不是絕對,如果 Google 判斷兩頁差異夠大,仍可能分開索引。
結語
canonical 處理的是一個很實際的問題:網站上同一份內容有好幾個網址,你要不要自己決定哪一個算數。不設,Google 會替你決定;設了,還要確認其他訊號跟它一致,Google 才會聽你的。
具體的下一步:打開 Search Console,挑三個流量最高的頁面用網址檢查工具查一下,比對「使用者宣告的標準網址」和「Google 選取的標準網址」是否一致。只要有一個不一致,就從內部連結和 Sitemap 開始排查。