canonical 這個標籤看起來只是一行 link,卻是我做技術稽核時翻車率最高的地方之一。設對了,搜尋引擎知道該把權重集中到哪一頁;設錯了,你辛苦寫的內容會被指到別頁去,甚至整組頁面互相打架。我是吳承學,做 SEO 二十年,這篇專門講 canonical 的自我指向原則,再把我實際遇過最多的五種錯誤攤開來,讓你在改站之前先避開。這些錯誤到 2026 年依然天天在網站上出現,不是舊聞。
1. 我為什麼堅持每頁先做好自我指向
很多人以為 canonical 只有在「有重複頁」時才需要設。我的立場相反:每一頁都應該先指向自己,這是預設值,不是例外。
1-1 自我指向的意思,比你想的單純
自我指向就是每一頁的 canonical 指回自己的標準網址。它等於對搜尋引擎說「這一頁就是本尊,請索引我這個網址」。這件事之所以重要,是因為同一份內容常常能透過好幾個網址被打開,例如帶追蹤參數的、大小寫不同的、有沒有結尾斜線的、有沒有帶 index 檔名的。你不主動宣告哪個是本尊,搜尋引擎就得自己猜,猜錯的代價是權重分散,甚至它挑中的標準版本跟你想被看到的那個不一樣。我做稽核時看過一個匿名的服務型網站,同一篇文章因為後端傳輸方式不統一,長出好幾個大同小異的網址,每個都沒設 canonical,最後搜尋引擎收錄的是一個帶著多餘路徑的版本,看起來很不專業。自我指向就是用來堵住這種模糊地帶。
<link rel="canonical" href="https://example.com/blog/seo-canonical/" />
1-2 我要求 canonical 網址是絕對而且統一的
canonical 我一律用絕對網址,含通訊協定與網域,不用相對路徑。同時整站的網址規則要統一:要嘛都帶結尾斜線、要嘛都不帶;要嘛都用 https、都用帶 www 或都不帶。canonical 指向的那個版本,必須跟你實際想被索引、以及網站內部連結所指的版本一致。這三者不一致,是很多混亂的源頭。
1-3 自我指向不是萬靈丹,我怎麼判斷該不該改指他頁
自我指向是預設,但遇到真正的重複內容時,要把重複版本的 canonical 指向那個你選定的主要版本。判斷標準是內容是否實質相同。我的做法是先問:這兩個網址呈現給使用者的內容,有沒有明顯差異、有沒有各自的存在理由。若幾乎一樣,就讓次要版本指向主要版本,把權重集中;若各有用途,就各自自我指向並用其他方式區隔。
2. 錯誤一:整站 canonical 都指向英文首頁
這是我看過最誇張、影響也最大的錯誤,通常出在模板寫死。
2-1 為什麼會發生這種事
工程師在共用版型裡把 canonical 寫成固定值,可能是首頁網址、也可能是某個語系的首頁,結果全站每一頁的 canonical 都指到同一個網址。我遇過一個多語系的匿名客戶,所有內頁的 canonical 全部指向英文首頁,等於告訴搜尋引擎「這幾百頁其實都是同一頁」。
2-2 它造成的後果有多嚴重
後果是除了那個被指向的首頁之外,其他頁面幾乎都拿不到索引機會。你的產品頁、文章頁再好,都被自己的 canonical 判了緩刑。這種錯誤肉眼不容易發現,因為頁面看起來正常,得檢視原始碼才會抓到。我的檢查方式是抽樣不同模板的頁面,逐一看 canonical 是不是各自指回自己,只要發現多頁指向同一網址,就是這個病。
3. 錯誤二:canonical 互相指來指去,形成循環
循環指向比較隱蔽,但一樣會讓搜尋引擎放棄判斷。
3-1 循環是怎麼繞出來的
常見情境是 A 頁的 canonical 指向 B,B 頁的 canonical 又指回 A;或是牽扯到轉址,網址 A 轉到 B,B 的 canonical 卻又指回已經被轉走的 A。搜尋引擎順著 canonical 走,繞了一圈回到原點,找不到明確的本尊,只好用自己的判斷,你設的 canonical 等於失效。
3-2 我用一張表釐清正確與錯誤的指向
| 情境 | 錯誤做法 | 正確做法 |
|---|---|---|
| 兩頁內容相同 | A 指 B、B 指 A | 兩頁都指向選定的同一個主要版本 |
| 網址已轉址 | 新址 canonical 指回舊址 | 新址自我指向,舊址 301 到新址 |
| 分頁系列 | 第 2 頁 canonical 指回第 1 頁 | 每頁自我指向 |
釐清循環的關鍵,是把 canonical 的方向畫成一條線,確認它最後停在一個會自我指向的網址上,而不是繞回起點。
3-3 轉址與 canonical 別叫它們做同一件事
我常提醒團隊:301 轉址是「把使用者和搜尋引擎帶去另一頁」,canonical 是「這頁還在,但請以另一頁為準」。兩者用途不同。把已經 301 的舊網址還設 canonical,或是想用 canonical 取代該做的轉址,都會製造矛盾訊號。同一組網址,只讓其中一種機制主導。
4. 錯誤三到五:與 noindex 打架、參數失控、分頁指錯
剩下三種錯誤我放在一起講,因為它們共通點都是「訊號互相矛盾」。
4-1 錯誤三:canonical 與 noindex 同頁衝突
同一頁同時設了 canonical 指向別頁、又掛了 noindex,這是自相矛盾的指令。canonical 是在說「請把權重整合到那一頁、這頁是它的版本」,noindex 卻是在說「這頁別收錄」。搜尋引擎收到兩個打架的訊號,處理結果難以預期。我的原則很簡單:想整合權重就用 canonical、單獨保留這頁被索引;想徹底不收錄就用 noindex、而且這頁的 canonical 就自我指向,別再指去別處。兩種意圖不要疊在一起。
4-2 錯誤四:帶參數的網址各自為政
追蹤參數、排序參數、篩選參數,會讓同一份內容衍生出無數個網址。若這些帶參數的網址都自我指向,等於每一種參數組合都被當成獨立頁面,重複內容瞬間爆量。正確做法是讓帶參數的版本,canonical 指向乾淨的、不帶參數的主網址。我處理過一個匿名的零售型網站,光是排序與篩選就生出上千個變體網址,全部指回乾淨網址之後,索引才回到該有的樣子。
網址:https://example.com/products/?sort=price&utm_source=news
canonical 應指向:https://example.com/products/
4-3 錯誤五:分頁系列把 canonical 全指向第一頁
列表的第二頁、第三頁,很多人習慣把 canonical 全指回第一頁,想把權重集中。這其實會讓第二頁以後的內容不被獨立看待,那些只出現在後面幾頁的項目,可能就此被忽略。我的做法是分頁的每一頁都自我指向,讓每頁各自被理解為系列的一部分,而不是硬把它們壓成同一頁。下面這張表整理我對這三種錯誤的處理原則。
| 錯誤 | 矛盾訊號 | 我的修法 |
|---|---|---|
| canonical 與 noindex 衝突 | 又要整合又要不收錄 | 依意圖二選一,不疊加 |
| 參數網址失控 | 每種參數都成獨立頁 | 帶參數版本指向乾淨主網址 |
| 分頁全指第一頁 | 後頁內容被吞掉 | 每頁自我指向 |
5. 常見問題
5-1 canonical 設錯,搜尋引擎一定會照我寫的做嗎
不一定。canonical 對搜尋引擎來說是強烈建議而非強制命令。如果你的 canonical 跟其他訊號(例如內部連結、轉址、sitemap)互相矛盾,搜尋引擎可能會選一個它認為更合理的版本。與其賭它會不會聽你的,不如把所有訊號調成一致。
5-2 我沒設 canonical 會怎樣
沒設的話搜尋引擎會自行挑一個它認為的標準版本,通常還算合理,但一旦你的內容有多個網址入口,就等於把選擇權交出去。我建議還是每頁補上自我指向,主動宣告本尊,減少被誤判的機會。
5-3 canonical 可以跨網域指向別人的網站嗎
技術上可以,用於內容確實同步授權到另一個網域的情境,例如授權轉載。但一般網站很少需要這樣做,設錯反而會把自己的頁面權重讓給別的網域。除非你很清楚在做什麼,否則我不建議跨網域設 canonical。
5-4 canonical 網址帶結尾斜線和不帶,算不算不一樣
算。對搜尋引擎而言,有無結尾斜線、大小寫、有無 www,都可能被視為不同網址。所以 canonical 一定要跟你網站實際採用、也實際能開啟的那個版本完全一致,連斜線都不能差。
5-5 我改了 canonical 之後多久會生效
沒有固定時間,取決於搜尋引擎多久重新抓取這些頁面。你可以透過網址檢查工具主動請求重新檢索,加快被看到的速度,但整組頁面完全反映新設定通常需要一段時間,不會立刻。
5-6 canonical 和 hreflang 會不會打架
會,如果設錯的話。多語系網站每個語系版本應該各自自我指向,再用 hreflang 標明彼此的對應關係。若你把某個語系版本的 canonical 指向另一個語系,等於告訴搜尋引擎那個語系不必獨立索引,hreflang 的對應就亂了。兩者要一起規劃,不能各做各的。
5-7 我改版換了網址結構,canonical 該怎麼跟上
換網址結構時,舊網址要用 301 永久轉到新網址,新網址則設好自我指向的 canonical,兩件事一起做。我看過有人只做了轉址卻忘了檢查新頁的 canonical,結果新頁的 canonical 還殘留著舊網址,等於一邊把人帶到新頁、一邊又說以舊頁為準,訊號自相矛盾。改版是 canonical 最容易出錯的時機,我會把它列為改版後必查的項目。
