搜霸 SEOBARSEO / GEO 技術專欄canonical 是什麼?重複網址的判斷與常見設錯

canonical 是什麼?重複網址的判斷與常見設錯

2026年8月31日技術 SEO· 王豪勳
淺色底示意圖:四條分別標示 http、https、www 的灰色網址橫線,箭頭全部匯聚指向右側一個綠色的標準網址方框

TL;DR

  • canonical(標準網址)是建議不是命令,Google 的文件寫得很直白:這是 hint,不是 rule
  • Google 會綜合協定、轉址、sitemap 收錄狀況與 canonical 標籤自行判斷,可能選一個跟你指定的不一樣的網址
  • 最常見的重複來源不是內容抄襲,是同一份內容在 httphttpswww、參數網址上各活一份
  • 每一頁都該有指向自己的 canonical,這比只在重複頁上設更不容易出錯
  • 要「合併」用 canonical,要「搬家」用 301 轉址,兩者不能互相取代

目錄

canonical 是建議而不是命令
重複網址是怎麼長出來的
每一頁都該指向自己
四種最常見的設錯
canonical 與 301 轉址的分工
怎麼確認它真的生效
AI 搜尋讓這件事更重要

引言

大部分人第一次認真研究 canonical,是因為 Search Console 跳出那句「Google 選擇的標準網址與使用者指定的網址不同」。訊息本身沒有情緒,但它的意思其實不太客氣:你指定了一個網址,Google 看過了,然後選了別的。

canonical(中文文件譯作「標準網址」)解決的是一個很無聊但很普遍的問題——同一份內容出現在好幾個網址上。搜尋引擎不希望在結果裡放五個一模一樣的頁面,所以它會挑一個代表。canonical 是你在這場挑選裡表達意見的方式。

只是「表達意見」這四個字,比多數教學文寫得還要精確。

canonical 是建議而不是命令

Google 官方文件對這件事的措辭沒有模糊空間:

indicating a canonical preference is a hint, not a rule

出自 Google Search Central 的標準網址說明。同一份文件也列出它實際會參考的訊號:是否使用 HTTPS、轉址的指向、網址有沒有出現在 sitemap 裡,以及 rel="canonical" 標籤。

換句話說,canonical 是四種訊號之一,不是開關。當這些訊號彼此打架——例如標籤指向 A、sitemap 只收錄 B、而 A 又會轉址到 C——Google 就會自己做決定,而它的決定不需要跟你一致。

這個認知會改變你除錯的方式。看到「Google 選了別的網址」時,第一個該問的不是「標籤是不是壞了」,而是「我有沒有同時送出互相矛盾的訊號」。

重複網址是怎麼長出來的

遇到的重複極少是內容被抄。多數是同一份內容自己長出好幾個門牌:

協定沒收斂。 http://example.com/https://example.com/ 如果都回傳 200(也就是兩個都打得開、都有內容),對搜尋引擎而言就是兩個網址。這是最容易被忽略的一種,因為人用瀏覽器看不出差別——瀏覽器會自動補上協定,你根本不會注意到自己走的是哪一條。

www 與非 www 沒收斂。 同樣的道理,www.example.comexample.com 是兩個主機名稱。

語言前綴重複。 多語網站常見 //tw/ 兩個網址內容幾乎相同——一個是預設語言,一個是明確指定中文版。兩邊都能開,內容一樣。

參數。 ?utm_source=fb?sort=price?page=1 這類參數會產生無數個技術上不同、內容上相同的網址。

分頁與篩選。 商品列表的第一頁常常同時存在於 /products/products?page=1

這幾種可以並存,而且會相乘。一個沒收斂協定又沒收斂 www 的網站,光首頁就有四個版本。

每一頁都該指向自己

有個常見的誤解是「canonical 只要設在重複的那幾頁就好」。更穩的做法是每一頁都輸出一個指向自己的 canonical,業界稱為自我參照(self-referencing canonical)。

理由很實際:你不會知道自己的網址被誰用什麼形式引用。有人在社群貼文加了追蹤參數、有人用 http 開頭轉貼、有人補了 www。這些網址一旦被爬到,如果頁面上有指向乾淨網址的 canonical,訊號就會收斂回同一個;沒有的話,它們各自成立。

自我參照要注意的是絕對網址:寫 <link rel="canonical" href="/about"> 這種相對路徑,在 httphttps 兩種情況下會解析成不同結果,等於什麼都沒收斂。一律寫完整網址,含協定與主機名稱。

四種最常見的設錯

第一種,整站每頁都指向首頁。 這通常是模板寫死造成的。後果不是「內頁的權重都集中到首頁」,而是內頁根本進不了索引——你等於在跟 Google 說每一頁都是首頁的複本。

第二種,兩個近乎相同的頁面各自指向自己。 這是自我參照的反面案例://tw/ 內容幾乎一樣,各自宣告自己是標準網址,於是誰都沒有讓步,Google 只好自己挑一個。可能挑到你不想要的那個,也可能兩個都留著互相稀釋。

第三種,canonical 指向一個會轉址的網址。 標籤說「請用 A」,A 又轉去 B。多一層轉折就多一次判斷,而 Google 完全可能直接跳過你的建議。

第四種,跨協定或跨主機不一致。 頁面在 https://www.example.com/about,canonical 卻寫 http://example.com/about。三個變數(協定、www、路徑)錯一個就前功盡棄。

四種的共同形狀是同一個:訊號互相矛盾。canonical 沒有壞掉,是它被別的訊號蓋過去了。

canonical 與 301 轉址的分工

這兩者常被混用,但它們回答的是不同問題。

canonical 301 轉址
性質 建議 指令
使用者會看到 原本那一頁 被帶到新網址
適用 內容重複但兩邊都要保留 內容搬家、舊網址不再需要

判斷方式很單純:這兩個網址都還需要有人能打得開嗎? 需要就用 canonical,不需要就用 301。

商品列表的排序參數頁要留著給使用者點,那用 canonical。網站換域名、舊網址沒有存在的理由了,那用 301。

換域名這件事特別要留意狀態碼。Google 的 HTTP 狀態碼說明裡,301 與 302 的差別是訊號強弱而不是有無:301 被視為 strong signal(強訊號)、302 是 weak signal(弱訊號)。常見的「302 完全不移轉權重」說法比官方措辭來得絕對。

即使如此,實務結論不變:確定不會回頭就用 301。用 302 表達永久搬遷,等於用一個弱訊號去說一件確定的事,搬遷會遲遲無法完成。而這種錯誤在瀏覽器上完全看不出來,因為兩種狀態碼的畫面表現一模一樣。

怎麼確認它真的生效

不要只看原始碼裡有沒有那一行。有三件事要分開確認。

第一,標籤本身。 用指令列直接看,比在瀏覽器裡翻原始碼快:

curl -s https://example.com/about | grep -i canonical

第二,協定與主機有沒有收斂。 這是我認為最值得優先檢查的一項,因為它最常被忽略而且影響最廣。分別打四個版本,看回應狀態碼:

for u in http://example.com/ https://example.com/ \
         http://www.example.com/ https://www.example.com/; do
  echo "$(curl -s -o /dev/null -w '%{http_code} → %{redirect_url}' "$u")  $u"
done

健康的結果是只有一個回 200,其餘三個回 301 並指向它。如果出現兩個以上的 200,代表同一份內容在多個網址上各自成立。

第三,Google 實際怎麼判斷。 前兩項確認的是你送出了什麼訊號,這一項才是結果。到 Search Console 的「網頁索引」報表,用網址審查工具查單一頁面,它會同時顯示「使用者指定的標準網址」與「Google 選擇的標準網址」。兩者不同時,回頭檢查上面那四種設錯。

這三項都無法保證 Google 一定照辦。 你能做的是把訊號整理到不互相矛盾,剩下的是它的判斷。任何宣稱能「強制指定」標準網址的說法,都與官方文件相牴觸。

AI 搜尋讓這件事更重要

生成式搜尋改變了結果的樣子,但沒有改變索引的機制。ChatGPT、Perplexity 這類服務在回答時引用某個網址,前提仍然是那個網址被抓取、被判定為代表版本。

同一份內容散在四個網址上,對 AI 系統的影響其實比對傳統搜尋更直接:它要判斷「這個主題的來源是誰」,而分裂的網址讓同一個實體看起來像四個。內容再好,也會因為訊號分散而稀釋。

這不是新的技術要求,而是既有的技術基礎在新場景裡的權重提高了。canonical、301、協定收斂這些行之有年的做法,做好不保證內容被引用,但沒做好會讓內容在被納入考慮之前就先流失掉。

要驗證的話,最小成本的方式是把上面那段四個網址的檢查跑一次。多數網站跑完會發現至少一項不合格,而那通常是三十分鐘之內可以修完的事。

canonical技術 SEO重複內容301 轉址

常見問題

Q

設了 canonical,Google 就一定會照做嗎?

不會。Google 官方文件寫明這是 hint(建議)不是 rule(規則),它會綜合協定、轉址、sitemap 收錄狀況與 canonical 標籤自行判斷,可能選一個與你指定的不同的網址。Search Console 的網址審查工具會同時顯示「使用者指定的標準網址」與「Google 選擇的標準網址」,兩者不同時要回頭找互相矛盾的訊號。

Q

canonical 和 301 轉址差在哪裡,什麼時候用哪一個?

判斷方式是「這兩個網址都還需要有人打得開嗎」。需要就用 canonical(例如商品列表的排序參數頁),不需要就用 301(例如換域名、舊網址不再需要)。canonical 是建議、使用者仍停在原頁;301 是指令、使用者會被帶到新網址。

Q

每一頁都要設 canonical 嗎,還是只有重複的頁面要設?

建議每一頁都輸出指向自己的 canonical,稱為自我參照。因為你無法控制別人用什麼形式引用你的網址——加了追蹤參數、用 http 開頭、補上 www——有自我參照時這些變體會收斂回同一個網址。要注意寫絕對網址(含協定與主機名稱),相對路徑在 http 與 https 下會解析成不同結果。

Q

怎麼快速檢查我的網站有沒有重複網址問題?

分別打開 http、https、www、非 www 四種組合,看回應狀態碼。健康的結果是只有一個回 200、其餘三個 301 指向它。出現兩個以上的 200,代表同一份內容在多個網址上各自成立。指令列可用 curl -s -o /dev/null -w '%{http_code}' 逐一測試。

Q

AI 搜尋興起之後,canonical 還重要嗎?

更重要。生成式搜尋改變了結果呈現方式,但沒有改變索引機制——AI 服務要引用某個網址,前提仍是它被抓取並判定為代表版本。同一份內容散在多個網址上,會讓同一個實體在 AI 眼中看起來像好幾個,內容再好也會因訊號分散而稀釋。

技術 SEO 分類其他文章

繼續閱讀同主題的延伸內容

HTTP 狀態碼與 SEO:301、404、410、503 分別代表什麼
當 Google 的爬蟲收到某個 HTTP status code,它接下來會做什麼。內容對照官方文件,其中兩處與中文圈流傳的說法不同:302 是弱訊號而非完全不移轉,以及 404 與 410 其實被…
robots.txt 怎麼寫?語法、常見錯誤與 AI 爬蟲
robots.txt 的語法、規則比對方式與六個常見錯誤。包含最容易誤解的一點:它擋的是爬取,不是收錄;以及實測台灣 21 個網站的 robots.txt,看誰在管 AI 爬蟲、誰完全沒設。
sitemap 是什麼?產生、提交與 Google 實際會讀的欄位
XML sitemap 怎麼產生、怎麼提交,以及 sitemap.xml 裡哪些欄位 Google 根本不會讀。包含 ping 端點停用後剩下的三種提交方式,以及用 xmllint 自行驗證格式時,哪…

留言討論

只有會員能留言(防止垃圾訊息),留言顯示於此頁。

載入中...
← 返回SEO / GEO 技術專欄