canonical 標籤是一段放在網頁原始碼裡的 HTML 標記,格式是 <link rel=”canonical” href=”網址”>,作用是告訴 Google:這一群長得很像的頁面裡,哪一個才是「正版」,排名與權重訊號都算在它身上。如果網站裡有好幾個網址顯示幾乎一樣的內容——像是 http 版跟 https 版並存、網址後面多了排序或追蹤參數、同一篇文章被分到兩個分類底下——Google 很難自己判斷該收錄哪一個,canonical 標籤就是用來解決這個判斷問題的工具。
不過要先說清楚一件事:canonical 不是強制指令。Google 官方文件把它定義為一種提示而非規則——網站主可以宣告偏好,但最終由系統自己判斷哪一個版本最適合收錄。這也是為什麼不少人明明設定了 canonical,Search Console 卻顯示 Google 選了別的網址。
以下依序整理重複內容怎麼產生、canonical 三種宣告方式、語法規則、常見錯誤,到怎麼用 Search Console 確認設定是否真的生效。
canonical 標籤是什麼?
完整名稱是 rel=”canonical” 連結註解,中文圈通常稱為「標準網址標籤」。它放在頁面的 head 區塊裡,範例如下:<head><title>頁面標題</title><link rel=”canonical” href=”https://example.com/dresses/green-dresses” /></head>。這一行的重點有兩個:第一,網址要用絕對路徑(完整網址),不能寫成 /dresses/green-dresses 這種相對路徑;第二,就算是標準頁面本身,也建議加上指向自己的 canonical(稱為自我參照 canonical),而不是只在重複頁面上加。
canonical 標籤本身是一種 HTML 標記,牽涉到原始碼層級的設定,如果對 HTML 標籤在 SEO 裡扮演的角色還不熟,可以先看HTML 標籤與 SEO 的基本關係。
網站為什麼會出現重複或相似內容?
多數網站的重複內容不是刻意複製貼上,而是技術架構自然產生的副產品。常見來源包括:
- 協定或網域差異:http 與 https 版本並存、有無 www 的網址同時能打開。
- 網址參數:排序、篩選、UTM 追蹤參數、session ID 等,會讓同一頁內容對應出一大串不同網址。
- 裝置版本:獨立的行動版網址(例如 m.example.com)跟桌機版網址內容相同。
- 列印版或簡化版頁面:部分 CMS 會自動產生 print 版網址。
- 分類或標籤重複收錄:同一篇文章同時掛在兩個分類底下,各自產生一個網址。
- 內容聯合或轉載:文章授權給其他網站刊登,內容幾乎一致。
這些情境的共同點是:內容對讀者來說都「有用」,所以不適合直接刪除或擋爬蟲,而是該用 canonical 把訊號收斂到一個網址上。
宣告 canonical 的三種方式,訊號強弱不同
Google 官方文件列出三種宣告標準網址的方法,再加上 301 轉址一起比較的話,訊號強度由強到弱分別是:
| 方式 | 怎麼做 | 適用情境 | 訊號強度 |
|---|---|---|---|
| 301 重新導向 | 直接把舊網址導到新網址 | 確定要徹底換成新網址,舊網址不再需要保留 | 最強 |
| rel=”canonical” 連結標籤 | 在 head 裡加一行 link 標籤 | 一般網頁最常用的方式 | 強 |
| HTTP 標頭(Link header) | 伺服器回應裡夾帶 Link: <網址>; rel=”canonical” | PDF、Word 等無法加 HTML 標籤的檔案 | 強 |
| Sitemap 只列標準網址 | sitemap.xml 裡只放想被收錄的那個網址 | 頁面數量龐大、難以逐一加標籤時的輔助訊號 | 弱 |
官方也提到,這些方法可以疊加使用,同時用兩種以上的方式一致指向同一個網址,會提高 Google 真的採用這個標準網址的機率;但前提是每一種方法指向的網址都要一致,一旦互相矛盾,等於是在製造混亂訊號。
rel=”canonical” 怎麼寫?語法規則一次看懂
除了絕對路徑跟自我參照這兩個重點之外,還有幾條官方列出的規則:
- canonical 標籤只能放在 <head> 區塊裡,放在 body 裡沒有效果。
- 一個網頁只能有一個 canonical 宣告,如果同一頁出現多個互相衝突的 rel=”canonical”,Google 可能會全部忽略。
- 如果網頁有獨立的行動版網址,應該在桌機版加 rel=”alternate” 指向行動版,同時桌機版自己的 canonical 仍指向自己;行動版網頁則用 canonical 指回桌機版。
- 如果用 JavaScript 動態產生 canonical 標籤,要確保它最終真的被正確寫進 HTML 原始碼,而不是只存在於瀏覽器執行後的 DOM——最保險的做法是直接寫進伺服器回傳的 HTML,不要靠 JavaScript 事後插入或竄改。
canonical 只是提示:Google 怎麼決定最終答案
前面提過,canonical 是提示而非規則,Google 判斷標準網址時會綜合考量好幾個訊號,包括網站主宣告的 canonical、redirect 設定、sitemap 裡列出的網址,以及協定版本(http/https)。其中幾個比較少被提到的細節:
- HTTPS 優先:Google 預設傾向選 HTTPS 版本當標準網址,除非出現 SSL 憑證無效、頁面引用了不安全的資源、HTTPS 版本本身又被導回 HTTP,或是 HTTPS 頁面的 canonical 反而指向 HTTP 版——這幾種情況會讓 Google 轉而選擇 HTTP 版本。
- hreflang 群集優先:如果網站有多語系版本並用 hreflang 互相標註,Google 傾向從同一個 hreflang 群集裡選標準網址;例如 de-de 和 de-ch 兩個版本互相標註 hreflang,就會比沒有被納入群集的 de-at 更容易雀屏中選。
canonical 常見錯誤
以下幾個是官方文件明確點名、實務上也最常踩到的錯誤:
- 全站 canonical 寫死指向首頁:通常是佈景主題或 CMS 設定不當,把所有頁面的 canonical 都硬指到首頁,等於告訴 Google「這些頁面都不重要,收首頁就好」,其他頁面因此很難被單獨索引。
- 不同方法指向不同網址:例如 sitemap 列的是 A 網址,頁面裡的 canonical 標籤卻指向 B 網址,這種矛盾訊號會讓 Google 的判斷更不穩定。
- 分頁全部指向第一頁:後面會獨立說明,正確做法是每一頁自我參照,而不是全部導回第一頁。
- 用相對路徑而不是絕對路徑:官方明確建議用完整網址,相對路徑在某些情境下會被誤解析。
- canonical 跟 noindex 同時用在同一頁:這兩個設定互相矛盾——一個是「允許索引但訊號併到別處」,一個是「完全不准索引」,同時出現會讓 Google 無所適從,應該只選一個用。
- 用 robots.txt 封鎖想當作標準版本的網址:如果 Google 的爬蟲根本進不去那個網址,就無從判斷內容、更不可能把它選為標準版本。網站的 robots.txt 設定如果擋錯地方,canonical 會整個失效。
分頁內容的 canonical 要怎麼設定?
部落格列表頁、電商分類頁常見的分頁(例如 /blog/page/2、/blog/page/3)是另一個容易設錯的地方。早期流傳的做法是把所有分頁都指向第一頁,但這其實是錯誤示範——官方文件不建議統一指向第一頁,而是每一頁都該有自己的 canonical,指向自己。
另外,曾經用來標示分頁關係的 rel=”next” 和 rel=”prev” 標籤,Google 已經不再使用,保留著也不會有負面影響,但不需要靠它們處理 canonical 問題。正確做法很單純:確保每一頁有獨立、乾淨的網址,並用一般的 <a href> 連結做好上一頁、下一頁的導覽即可。
canonical、301 轉址、noindex 怎麼選?
這三者常被搞混,但解決的問題其實不同:
| 做法 | 使用者看到的網址 | 頁面索引狀態 | 適合情境 |
|---|---|---|---|
| rel=”canonical” | 不變,使用者仍進入原本網址 | 頁面技術上仍可存取,但排名訊號併入標準網址 | 頁面要保留給使用者或特定情境用,但不想讓它獨立參與排名 |
| 301 重新導向 | 直接跳轉到新網址 | 舊網址不會被索引 | 頁面已經不需要獨立存在,確定要永久換掉網址 |
| noindex | 不變 | 整頁被排除在索引之外 | 頁面本身就不該出現在搜尋結果,例如內部搜尋結果頁、會員專屬頁 |
要特別提醒的是前面提過的禁忌:不要在同一頁同時放 canonical 又放 noindex,兩者的指令方向互相衝突。
用 Search Console 確認 canonical 有沒有生效
設定完 canonical 之後,URL 檢查工具是唯一能直接確認結果的地方。如果還沒把網站加進 Search Console,可以先參考建立 SEO 儀表板的設定步驟。檢查步驟如下:
- 在 URL 檢查工具輸入要確認的完整網址。
- 找到「頁面索引」區段,裡面有兩個關鍵欄位。
- 使用者宣告的規範網址:顯示網站主自己宣告的 canonical 目標,如果頁面不是重複頁面,這欄會顯示「無」。
- Google 選定的規範網址:這是 Google 實際採用的標準網址。如果頁面沒有其他相似版本,這欄就會是頁面本身。
- 兩個欄位不一致時,代表 Google 選了跟網站主宣告不同的版本,需要進一步排查。
Search Console「頁面索引」報表裡,跟 canonical 有關的狀態
頁面索引報表裡有幾個狀態名稱,直接對應 canonical 的判定結果:
| 狀態 | 意思 | 需要處理嗎 |
|---|---|---|
| Alternate page with proper canonical tag | 這頁被正確標示為其他頁面的替代版本,canonical 設定正確 | 不用處理,這是正常現象 |
| Duplicate without user-selected canonical | 頁面被判定為重複內容,但沒有宣告 canonical,由 Google 自行選了另一個網址 | 建議補上明確的 canonical 宣告 |
| Duplicate, Google chose different canonical than user | 已經宣告 canonical,但 Google 選了另一個網址當標準版 | 需要排查,通常是內容不夠不同或訊號衝突 |
| Page with redirect | 這個網址會轉址到別的頁面,本身不會被索引 | 正常現象,除非轉址設定有誤 |
頁面被判定為 Duplicate 通常不是壞事,代表 Google 已經找到並索引了標準頁面,其餘版本正常不會出現在搜尋結果裡——除非網站主認為 Google 選錯了版本。如果想先確認網站有沒有更根本的收錄問題,可以對照網站沒被收錄的檢查步驟。
Google 選的跟設定的不一樣,怎麼排查?
如果 Search Console 持續顯示「Duplicate, Google chose different canonical than user」,可以照以下順序排查:
- 用 URL 檢查工具確認 Google 目前選定的標準網址,評估這個版本是否真的不合理。
- 檢查技術設定,包括 canonical 標籤本身有沒有寫錯、伺服器回應是否正常、多語系頁面的 hreflang 標註是否完整。
- 確認重複頁面之間的內容差異夠不夠明顯,差異越清楚,重新分組判斷的速度越快;重新評估約需兩週。
- 如果等待後仍未更新,可以用 URL 檢查工具裡的「要求建立索引」功能,優先處理最重要的網址。
常見的根本原因還包括:CMS 外掛設定錯誤、伺服器對不同網域回應相同內容、網站遭駭客植入跨網域的 canonical 或轉址,以及內容被其他網站抄襲或轉載。前兩種屬於網站自己可以修正的技術問題,後兩種則分別需要清查入侵痕跡,或透過 DMCA 等管道要求下架。
轉載或聯合內容,適合用 canonical 處理嗎?
技術上 canonical 標籤可以跨網域使用,指向另一個完全不同網域的網址。但如果情境是文章授權給其他網站轉載,官方目前不建議用於聯合內容,因為轉載版本的排版、額外內容通常跟原文有不少差異,Google 不一定會採信這個跨網域宣告;更有效的做法是請轉載方在刊登的版本上加 noindex,或用 robots.txt 擋掉,確保只有原文網址會出現在搜尋結果。
常見問題
canonical 標籤會直接影響排名高低嗎?
不會。canonical 決定的是「一組相似頁面裡,由誰代表大家參與排名」,真正影響排名高低的還是內容品質、技術體質與外部連結等其他 SEO 因素。
完全沒設定 canonical 會怎樣?
Google 會自動幫每一組重複頁面選一個它認為最合適的標準版本,多數情況下猜得還算準。但網站規模一大、相似頁面一多,誤判的機率也會提高,這也是官方建議主動宣告 canonical 的原因。
canonical 設定後,Search Console 多久會更新?
官方排查指南提到,重新評估一組重複頁面通常需要約兩週,如果超過這個時間狀態還是沒變,可以用 URL 檢查工具主動要求重新建立索引。
WordPress 網站要怎麼加 canonical?
多數主流 SEO 外掛都會自動幫每個頁面加上指向自己的 canonical,不需要手動寫程式碼;只有在處理分類重複、參數網址這類特殊情境時,才需要額外手動指定或覆寫。
canonical 可以取代 301 轉址嗎?
不行。canonical 是「保留頁面存在、但訊號併到別處」的提示;如果舊網址已經確定不需要了,該用的是 301 轉址,直接把使用者和爬蟲都導向新網址。
參考資料
- How to Specify a Canonical with rel=”canonical” and Other Methods(Google Search Central)
- What Is URL Canonicalization(Google Search Central)
- Fix Canonicalization Issues(Google Search Central)
- Pagination Best Practices for Google(Google Search Central)
- URL Inspection tool – Search Console Help(Google Search Console Help)
- Page indexing report – Search Console Help(Google Search Console Help)
