Canonical 標記(rel="canonical")是 SEO 技術中處理重複內容最關鍵的工具。當網站因為網址參數、協定切換、CMS 自動生成或行銷追蹤碼,產生內容相同但網址不同的頁面時,排名權重會被分散到各個版本,沒有任何一個頁面能取得理想名次。
在 AI 搜尋時代,ChatGPT、Perplexity、Google AI Overviews 抓取頁面建立知識索引時,canonical 更成為決定「哪個版本被引用」的關鍵訊號。這篇文章適合電商經營者、企業官網管理者與正在做技術稽核的工程師閱讀。
本篇目錄
什麼是 canonical 標記?
Canonical 標記(又稱規範網址標記)是一段放在 HTML <head> 區段中的標記,功能是告訴搜尋引擎,當多個網址出現相同或高度相似的內容時,哪一個網址才是主要版本。
其他副本網址仍可被使用者存取,但搜尋引擎會把排名權重與連結價值集中到 canonical 指定的網址上,避免權重被切散在多個重複頁面之間。
Canonical 標記的核心功能,是讓搜尋引擎在多個重複版本中,選擇您指定的那一個作為搜尋結果的代表,避免排名權重被分散。
Canonical 標記的基本語法
這項標記由 Google、Bing、Yahoo 共同發起,屬於開放標準。格式相當單純,只需在頁面 <head> 區段加入一行 <link> 標記:
<head>
<title>產品名稱 - 品牌官網</title>
<link rel="canonical" href="https://www.example.com/product/abc">
</head>
在這個範例中,無論使用者是從 ?utm_source=fb 或 ?ref=newsletter 的版本進入頁面,搜尋引擎都會知道真正應該被索引的網址是 https://www.example.com/product/abc。
Canonical 標記能解決哪些問題?
這項標記主要處理以下三類重複內容情境,也是台灣中小企業官網與電商網站最常遇到的狀況:
http:// 與 https://、www 與非 www 版本,以及大小寫不同的網址寫法。為什麼規範化對 SEO 很重要?
重複內容是容易被忽略、卻嚴重影響排名的議題。當搜尋引擎抓到多個內容相同的網址時,會造成三個直接的損害:爬蟲預算被浪費、排名權重被稀釋,以及搜尋引擎選錯代表頁。
爬蟲預算的浪費
Google 對每個網站有大致固定的抓取配額,稱為 Crawl Budget。若一個 1,000 頁的網站因為參數變化產生 50,000 個網址,爬蟲就會把配額花在重複頁面上,真正重要的新頁面反而延後被索引。
這對台灣電商特別嚴重:一個商品分類頁可能因為顏色、尺寸、價格區間的篩選,產生數十倍的網址變體,稀釋掉原本該用於主力商品頁的抓取資源。
排名權重被稀釋
假設一篇文章獲得 10 個外部反向連結,但分別指向 5 個不同的網址版本(分享時各自帶了追蹤碼),每個版本只拿到 2 個連結的價值。設定 canonical 之後,這些權重會集中到指定的版本,該頁面在搜尋結果中的競爭力才會完整呈現。
搜尋引擎可能選錯代表頁
沒有 canonical 時,搜尋引擎會自行挑一個「最具代表性」的版本顯示在結果中。但演算法不一定選得如您預期,可能挑到帶追蹤參數的版本、舊版頁面,或分頁列表頁而非主要商品頁,直接影響點擊率與品牌印象。
網址重複是怎麼發生的?
許多經營者會困惑:「網站明明只做了一個首頁,為什麼會有重複網址?」問題根源在於人把網頁視為一個概念,搜尋引擎卻把每個獨一無二的網址都當成獨立頁面。想了解網址本身的命名原則,可參考 URL 結構專文。
對搜尋引擎而言,每一個獨一無二的網址都是一個獨立頁面:即使內容完全相同,只要字串不同(含協定、大小寫、結尾斜線、參數),就會被視為不同頁面。
首頁就可能有 10 種以上的版本
以最單純的首頁為例,以下這些網址在搜尋引擎眼中是完全不同的頁面,內容卻可能一模一樣:
http://example.com http://www.example.com https://example.com https://www.example.com https://www.example.com/ https://www.example.com/index.html https://www.example.com/index.php https://www.example.com/?utm_source=facebook https://www.example.com/?fbclid=IwAR123 https://www.example.com/HOME
對人來說,這些都代表同一個首頁;但對 Googlebot 來說,這是十個獨立頁面,而且內容完全相同,正是典型的重複內容問題。
CMS 與動態網站讓問題更嚴重
現代的內容管理系統(WordPress、Shopify、Wix、Cyberbiz、91APP 等)會自動為相同內容產生多種路徑,並透過參數實現搜尋、排序、篩選與付費追蹤。一個典型的台灣電商網站,常因下列情境產生成千上萬的重複網址:
-
追蹤參數(Tracking Parameters)
UTM 行銷追蹤、Facebook 廣告 fbclid、Google Ads gclid、電子報的點擊識別碼等,讓每一次分享都產生不同網址。
?utm_source=fb&utm_medium=cpc&utm_campaign=summer_sale -
分頁與排序參數
商品列表的分頁、依價格或熱門度排序,以及顏色、尺寸、品牌的篩選條件,讓同一個分類產生數十種網址。
/shoes?page=2&sort=price_desc&color=black&size=US9 -
多重路徑(Multiple Paths)
同一個商品可以透過多個分類路徑到達,或同時存在中英文版本、桌機版與行動版的網址。
/products/abc、/category/shoes/abc、/brand/nike/abc指向同一商品 -
Session ID 與使用者識別
購物車、登入狀態的 session ID 被寫進網址,讓每位使用者看到的網址都不相同。
/cart?sessionid=ABC123XYZ -
列印版與 AMP 版
為列印或行動載入優化而產生的對應版本網址,內容相同但路徑不同。
/article/seo-guide/print、/amp/article/seo-guide
Canonical 標記的正確寫法
Canonical 有三種放置位置:HTML <head>、HTTP 回應標頭,以及 Sitemap。其中以 HTML <head> 最常用,也最容易維護與檢查。
方法一:HTML 標記(最常用)
在 <head> 區段中加入一行 <link rel="canonical">,這是絕大多數網站採用的做法:
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<title>台北網頁設計推薦 - 新視野</title>
<link rel="canonical" href="https://www.newscan.com.tw/web-design/">
</head>
方法二:HTTP Header(適合 PDF、圖片)
PDF、圖片、影片等非 HTML 檔案無法寫入 <head>,可以透過伺服器設定,在 HTTP 回應標頭中加入 canonical:
HTTP/1.1 200 OK Content-Type: application/pdf Link: <https://www.example.com/whitepaper.pdf>; rel="canonical"
方法三:Sitemap.xml(輔助訊號)
XML Sitemap 中列出的網址本身也是一種提示。Google 不會把 sitemap 視為絕對指令,但會當成判斷主版本的其中一個訊號。建議 sitemap 只放 canonical 版本,不要放帶參數的副本網址。
絕對路徑與相對路徑的選擇
canonical 強烈建議使用絕對路徑(完整的 https:// 開頭)。雖然 Google 也支援相對路徑,但實務上容易因為 base URL 解析錯誤而指到非預期的位置。
| 路徑類型 | 範例 | 建議 |
|---|---|---|
| 絕對路徑 | href="https://www.example.com/abc" |
✓ 強烈建議 |
| 協定相對 | href="//www.example.com/abc" |
△ 不建議 |
| 相對路徑 | href="/abc" |
✕ 避免使用 |
Canonical 標記的最佳實踐
正確使用 canonical 需要遵守幾項關鍵原則。以下六點是實務稽核中最常被忽略、也最容易出錯的重點:
-
Canonical 可以指向自己(Self-Referencing Canonical)
如果一個頁面本身就是主要版本,在
<head>中加入指向自己的 canonical 完全合理,也是建議做法。這稱為自我參照,能預防日後因追蹤參數而產生的重複問題。頁面/blog/seo-guide加入指向自身的 canonical,即使有人用?utm_source=fb分享,搜尋引擎仍知道主版本是哪一個。 -
主動為首頁設定 canonical
首頁是最常被以多種形式連結的頁面,可能被以含
www、不含www、加/index.html等寫法分享。主動加上 canonical,可以預先收斂這些無法預料的變體。首頁加入<link rel="canonical" href="https://www.example.com/">,統一所有首頁變體。 -
逐一檢查動態產生的 canonical
若網站由 CMS 或程式自動輸出 canonical,務必逐頁檢查實際產生的結果。常見狀況是程式錯誤導致每頁都指向首頁,或連參數一起輸出,完全失去合併的意義。
電商常見問題:
/product/abc?color=red的 canonical 寫成含參數的自己,而非乾淨的/product/abc。 -
避免發送相互矛盾的訊號
不要讓 canonical 與其他訊號打架。例如 A 頁指向 B、B 頁又指回 A,或 A 指向 B 但伺服器把 B 以 301 轉回 A。多層串接同樣會讓演算法難以判斷,甚至直接忽略。
錯誤:A 指 B、B 指 A 形成循環。正確:所有頁面的 canonical 都指向同一個最終版本。
-
謹慎使用在近似重複的頁面
canonical 不只能用於完全相同的頁面,也適用於高度相似的頁面(例如同商品的不同顏色)。但若頁面差異過大,Google 會忽略這個提示,改以獨立頁面各自索引。
一件 T 恤有黑、白、灰三色頁面,內容幾乎相同,可將灰、白指向黑色版本作為主頁面。
-
跨網域使用 canonical(Cross-Domain Canonical)
若同時經營多個網站(例如集團在數個品牌站發布同一篇文章),可用跨網域 canonical 把權重集中到主站。但被指向過去的版本將不會出現在搜尋結果中,對營運策略影響很大。
a-news.com 的文章指向 main-site.com,則 a-news.com 版本不會出現在結果中,流量全部集中到主站。
Canonical 標記與 301 轉址的差異
canonical 與 301 轉址都能處理「多個網址指向同一內容」的狀況,但兩者的行為與適用情境完全不同。混用或誤用,往往是技術稽核時發現的問題源頭。
| 比較項目 | Canonical 標記 | 301 轉址 |
|---|---|---|
| 使用者體驗 | 使用者仍可訪問副本網址,看到的內容相同 | 使用者被自動轉到目標網址,無法停留在原網址 |
| 搜尋引擎行為 | 建議性訊號,搜尋引擎可能採納或忽略 | 強制性指令,搜尋引擎必須遵守 |
| 權重傳遞 | 大部分權重會傳遞,但不保證完全 | 幾乎全部權重傳遞到目標頁 |
| 適用情境 | 內容相同但兩個網址都需保留,例如參數網址、AMP 版 | 網址永久變更,舊網址不再需要 |
| 實作位置 | HTML <head> 或 HTTP 回應標頭 |
伺服器設定(.htaccess、nginx 設定檔) |
| 點擊舊網址 | 正常顯示原頁面 | 被導向新網址 |
什麼時候用 canonical,什麼時候用 301?
判斷的關鍵只有一句話:使用者還需不需要看到舊網址。
- 網址需要保留可訪問(例如含 utm 參數的網址仍要供廣告系統使用),用 canonical
- 網址結構永久變更(例如分類重整,
/old-cat/換成/new-cat/),用 301 - 商品頁有多種篩選版本但內容差異很小,用 canonical
- 產品下架或頁面合併,舊網址不再有意義,用 301
- 網站從 HTTP 改成 HTTPS、從非 www 改成 www,用 301
Canonical 在 AI 搜尋時代的角色
隨著 ChatGPT、Perplexity、Google AI Overviews 等工具成為查找資訊的入口,使用者透過 AI 取得答案的比例快速提高。這些系統在抓取網頁、建立知識索引時,canonical 的重要性比過去更為明顯。
在 AI 搜尋時代,canonical 不只影響傳統排名,還決定了您的內容會以哪個版本被 AI 引用、被推薦給使用者。
AI 引用來源的優先選擇
當 AI 助理引用您的網站內容時,通常會以索引中的主版本作為來源連結(延伸閱讀:如何讓網站被 AI 引用)。若網站存在重複內容問題,可能被引用到帶追蹤參數的版本,影響品牌一致性與數據準確度。
Google AI Overviews 的引用偏好
Google AI Overviews 建立在既有索引之上,生成摘要時會優先取用被判定為主版本的頁面。若一篇文章因追蹤碼產生多個版本、canonical 又設錯,就可能出現非預期的網址被摘錄的情形。
結構化資料與 canonical 的協同效應
canonical 與結構化資料在 AI 搜尋中具有協同放大效應。canonical 確定了主版本、Schema 描述了頁面內容、Open Graph 提供社群分享資訊,三者一致時,AI 系統更容易正確理解與引用。
Canonical 標記常見錯誤
即使觀念正確,實務上仍常因細節失誤導致設定失效,甚至產生反效果。以下七項是台灣中小企業官網與電商網站最常見的錯誤:
- 所有頁面的 canonical 都指向首頁 常見於外掛或佈景主題的程式錯誤,結果讓搜尋引擎以為整站只有一個主要頁面,內頁全部失去被索引的機會。改善方式:用 Screaming Frog 或 Sitebulb 全站爬取,逐頁確認 canonical 目標是否正確。
- Canonical 指向 404 或 5xx 錯誤頁 若指定的網址回傳錯誤,搜尋引擎會直接忽略這個提示,原本應合併的重複頁可能全部各自索引。改善方式:定期用 Google Search Console 的網頁索引報告檢查,確保所有目標都回傳 200 OK。
-
在 noindex 頁面上設定 canonical
同一頁面同時寫
noindex與 canonical,會送出互相矛盾的訊號。改善方式:要禁止索引就單獨用 noindex,要合併權重就單獨用 canonical,兩者不要並用。 -
使用相對路徑導致解析錯誤
寫成
href="/product/abc"看似簡潔,但在某些模板或代理環境下可能被解析到錯誤的 base URL。改善方式:一律使用含網域的完整絕對路徑。 -
canonical 寫在 body 而非 head
規格明確要求 canonical 必須位於
<head>內,寫在<body>會被完全忽略,這在以 JS 動態插入時特別容易發生。改善方式:用檢視原始碼而非開發者工具確認實際輸出位置。 - 多個 canonical 標記同時存在 一個頁面若有兩個以上的 canonical(常見於 CMS 與外掛各加一次),搜尋引擎可能任選其一或全部忽略。改善方式:每頁只保留一個,可用 SEO 檢查外掛快速確認。
- 用 canonical 處理應該用 hreflang 的多語系 中文版與英文版之間是翻譯關係而非重複關係,應使用 hreflang。改善方式:每個語言版本各自指向自己的 canonical,再以 hreflang 標記彼此的語言對應。
Canonical 標記檢查清單
以下是實務稽核時使用的 canonical 檢查清單,適合企業內部或代理商在每月健診時逐項核對。建議搭配 Google Search Console 與全站爬蟲工具一起執行:
- 所有頁面的
<head>內都有一個(且只有一個)canonical 標記 - Canonical 使用絕對路徑(
https://開頭的完整網址) - Canonical 指向的網址回傳 HTTP 200,而非 301、404 或 5xx
- Canonical 指向的網址沒有設定 noindex
- 網站首頁有自我參照的 canonical 標記
- 商品頁、分類頁、搜尋結果頁的 canonical 已正確設定
- 含追蹤參數(utm、fbclid、gclid)的網址指向乾淨版本
- Sitemap.xml 中只包含 canonical 版本的網址
- 沒有 canonical 鏈式串接或彼此互指的循環
- 多語系版本使用 hreflang 而非 canonical 互指
- HTTP 與 HTTPS、www 與非 www 之間統一使用 301 轉址
- 分頁系列各自指向自己,而非全部指向第一頁
實用檢查工具推薦
結論:canonical 是不可忽略的 SEO 基礎
canonical 看似只是一行簡單的 HTML,卻決定了搜尋引擎如何理解網站結構、如何分配排名權重、如何在結果中呈現您的內容。在 AI 搜尋時代,它更進一步影響內容被引用的版本,直接關係到品牌的數位可見度。
如果您正要進行網站技術稽核,可以先從以下五個問題自我檢查:
- 所有頁面是否都有一個明確且正確的 canonical 標記?
- 含追蹤參數的網址是否都指向乾淨版本?
- 是否有任何 canonical 指向 404、5xx 或 noindex 頁面?
- 多語系或多區域版本是否正確使用 hreflang?
- Search Console 中 Google 實際採用的 canonical 是否符合預期?