第 30 章:Canonical 標記與重複內容處理
第 30 章:Canonical 標記與重複內容處理

Canonical 是什麼?
Canonical(標準網址標記) 是告訴搜尋引擎「這幾個 URL 雖然不同,但內容本質上是一樣的,請把 SEO 權重集中到這個標準版本」的機制。它是解決重複內容問題最核心、最重要的技術 SEO 工具。
<link rel="canonical" href="https://example.com/blog/seo-guide" />
這行代碼放在網頁的 <head> 區域,宣告這個頁面的「權威版本」是什麼。
直白比喻: 如果你的文章有兩個入口——正門(canonical URL)和側門(重複 URL),Canonical 標記就是在側門貼上「入口在正門」的告示,讓 Google 知道該把排名權重給哪一個。
重複內容的六大常見來源
在深入 Canonical 之前,先了解重複內容從哪裡來:
1. URL 參數(最常見)
https://example.com/product?color=red
https://example.com/product?color=blue
https://example.com/product?utm_source=facebook
https://example.com/product?session_id=abc123
同一個頁面因追蹤參數、篩選參數而產生多個 URL。
2. WWW / 非 WWW 版本
https://www.example.com/
https://example.com/
兩個版本都可能被索引為不同頁面。
3. HTTP / HTTPS
http://example.com/
https://example.com/
如果沒有正確的 301 重定向,兩個協定版本會同時存在。
4. 結尾斜線
https://example.com/blog
https://example.com/blog/
部分伺服器設定會讓這兩者被視為不同頁面。
5. 分頁與排序
https://example.com/category?page=1
https://example.com/category?page=2
https://example.com/category?sort=price
���商網站分類頁的各種篩選組合。
6. 行動版與桌面版
https://example.com/
https://m.example.com/
如果使用獨立行動版網站(非 RWD),兩個版本的內容可能高度相似。
Canonical 的運作原理
當 Google 發現多個 URL 包含相同或高度相似的內容時:
- Google 會選擇一個作為 Canonical URL(標準版本)
- 所有其他變體的排名訊號(PageRank、連結權重等)會合併到 Canonical URL
- Canonical URL 出現在搜尋結果中,其他版本通常不會顯示
如果頁面明確設定了 <link rel="canonical"> 標籤,Google 通常會尊重(但不是絕對)。Google 仍會根據自己的判斷來決定是否採用你宣告的 Canonical。
Canonical 的六種實現方式
方法一:HTML <link> 標籤(最推薦)
<head>
<link rel="canonical" href="https://example.com/original-page" />
</head>
✅ 優點: 靈活、易於維護、Google 最推薦的方式
方法二:HTTP Header
對於非 HTML 檔案(PDF、文件等),在 HTTP Response Header 中設定:
Link: <https://example.com/original-page>; rel="canonical"
方法三:Sitemap 中的 URL
Sitemap 中列出的 URL 被 Google 視為 Canonical 的強烈信號。確保 Sitemap 中只包含 Canonical URL。
方法四:301 重定向
將重複的 URL 永久重定向到 Canonical URL:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/canonical-page
適用場景: 永久不再使用的重複 URL
方法五:內部連結一致性
所有的內部連結都指向 Canonical URL 版本,而非重複版本。這是對 Google 最強的信號。
方法六:Google Search Console 網址參數工具
在 Search Console 中可以告訴 Google 如何處理特定 URL 參數(如 utm_source、sort 等),讓 Google 知道這些參數不影響頁面內容,無需單獨爬取。
Canonical 實戰範例
範例一:電商產品頁(參數問題)
# 產品頁有以下 URL 變體:
https://shop.com/product/shirt?color=red&size=m
https://shop.com/product/shirt?color=blue&size=l
https://shop.com/product/shirt?utm_campaign=summer
# 在每個變體的 <head> 中設定:
<link rel="canonical" href="https://shop.com/product/shirt" />
這樣 Google 會把所有變體的排名權重集中到標準產品頁。
範例二:HTTP/HTTPS 與 WWW 問題
# 在 http://example.com 的所有頁面加入 canonical 指向 HTTPS 版本:
<link rel="canonical" href="https://example.com/page" />
# 在 https://www.example.com 的所有頁面加入 canonical 指向裸域版本:
<link rel="canonical" href="https://example.com/page" />
更推薦的做法: 使用 301 重定向一次解決,而非僅靠 canonical。
範例三:跨網域內容授權(Syndication)
如果你將文章授權給其他網站轉載,可以在轉載頁面加上 canonical 指向你的原始頁面:
<!-- 在轉載網站上 -->
<link rel="canonical" href="https://your-site.com/original-article" />
這樣 Google 就知道原始版本在哪裡,排名權重歸屬於你。
範例四:分頁處理
# 第 2 頁的 canonical 指向自己(非指向第 1 頁):
<!-- 在 /category?page=2 上 -->
<link rel="canonical" href="https://example.com/category?page=2" />
# 同時使用 rel="prev" 和 rel="next" 輔助:
<link rel="prev" href="https://example.com/category?page=1" />
<link rel="next" href="https://example.com/category?page=3" />
注意: Google 在 2019 年後不再使用
rel="prev/next"作為排名信號,但仍有助於爬蟲理解頁面關係。
Self-Referencing Canonical:自我引用
每個頁面都應該有 canonical 標籤,即使它指向自己:
<!-- 在 https://example.com/blog/seo-guide 頁面上 -->
<link rel="canonical" href="https://example.com/blog/seo-guide" />
為什麼要自我引用?
- 防禦性設置: 如果有人複製你的內容(scraping),複製的頁面上可能保留了你的 canonical,讓 Google 知道你才是原作者
- 參數問題保護: 即使有人用帶參數的 URL 連結到你,自我引用的 canonical 仍然確保標準版本被確認
- 一致性: 讓所有頁面都有明確的信號,減少 Google 自行判斷的不確定性
Canonical 常見錯誤與陷阱
錯誤 1:所有分頁 Canonical 指向第一頁
<!-- 錯誤! -->
<!-- 在 /blog/page/3/ 上 -->
<link rel="canonical" href="https://example.com/blog/" />
這會導致第 2 頁以後的所有文章永遠不會被索引。
正確做法: 每個分頁 canonical 指向自己,或用「檢視全部」頁面作為 canonical。
錯誤 2:Canonical 鏈
Page A → canonical → Page B → canonical → Page C
Google 可能只追蹤一個跳躍,造成混亂。Canonical 應該直接指向最終標準版本。
錯誤 3:Canonical 與 Noindex 混用
<meta name="robots" content="noindex">
<link rel="canonical" href="https://example.com/canonical-page" />
同時告訴 Google「不要索引這個頁面」和「這個頁面的標準版本是 X」,發送矛盾信號。不要混用。
錯誤 4:相對路徑 Canonical
<!-- 錯誤! -->
<link rel="canonical" href="/blog/seo-guide" />
<!-- 正確!絕對 URL -->
<link rel="canonical" href="https://example.com/blog/seo-guide" />
Google 明確要求使用絕對 URL。
錯誤 5:Canonical 指向不相關頁面
<!-- 產品 A 的頁面,canonical 指向產品 B -->
<!-- 這是誤導,會被 Google 忽略甚至處罰 -->
多重複內容處理方案對比
| 方案 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| Canonical | 多版本共存,都需要可訪問 | 靈活,維護簡單 | Google 可能不採用 |
| 301 重定向 | 舊版已廢棄、永久遷移 | 信號最強,Google 必定採用 | 原始 URL 無法再訪問 |
| Noindex | 不想被索引的變體頁面 | 明確禁止索引 | 浪費 crawl budget |
| robots.txt 阻止 | 不想爬蟲浪費資源 | 節省 crawl budget | 不阻止索引 |
| URL 參數工具 | 追蹤參數、篩選參數 | Search Console 設定簡單 | 僅建議性質 |
選擇策略:
1. 如果重複版本不需要獨立存在 → 用 301 重定向
2. 如果重複版本需要存在但不想分散權重 → 用 Canonical
3. 如果重複版本需要存在但不需要索引 → 用 Canonical + 確保不被索引
排查與診斷工具
| 工具 | 用途 |
|---|---|
| Google Search Console | 查看「重複內容」報告,哪些頁面被 Google 選為 Canonical 但與你的設定不同 |
| Screaming Frog | 爬取全站,檢查每個頁面的 canonical 標籤和重複內容問題 |
| Site: 搜尋 | site:example.com "特定句子" 手動檢查是否有重複內容被索引 |
| Ahrefs / Semrush | 網站審計功能會標示 canonical 錯誤 |
| 瀏覽器開發者工具 | 檢查 HTTP Header 中的 canonical 和 X-Robots-Tag |
Search Console 診斷重點
- 前往「頁面」報告 → 查看「重複內容」分類
- 檢查「Google 選擇的標準網頁與使用者聲明的標準網頁不同」警告
- 確認排除的 URL 和原因
總結檢查清單
| 任務 | 說明 |
|---|---|
| ☐ 每個頁面都有 self-referencing canonical | 使用絕對 URL |
| ☐ HTTP 和 HTTPS 統一 | 確保只有一個版本存活(優先用 301) |
| ☐ WWW 和裸域統一 | 選擇其一,另一個 301 重定向 |
| ☐ 結尾斜線一致 | 統一使用 / 或不使用,不要兩版本並存 |
| ☐ URL 參數管理 | 追蹤參數不應生成獨立索引 URL |
| ☐ 分頁使用正確 canonical | 每個分頁指向自己 |
| ☐ Sitemap 中只有 canonical URL | 不包含任何重複版本的 URL |
| ☐ 內部連結指向一致 | 所有內部連結使用 canonical URL |
| ☐ 跨域內容設定跨域 canonical | 如果授權轉載,確保轉載網站有你原站 canonical |
| ☐ 不要混用 canonical 和 noindex | 發送矛盾信號 |
| ☐ 定期檢查 Search Console | 查看「重複內容」和標準網頁報告 |
| ← 第 29 章:robots.txt 與 Meta Robots 完整教學 | 回索引 | 第 31 章:SSL 憑證與 HTTPS 完整指南 → |
延伸閱讀:網站 SEO 學習與操作手冊
0 comments