網站收錄

canonical 寫了却没生效:規范标簽與收錄地址不一致时的核對顺序

canonical 是一條提示而不是指令,寫了却没用,通常是信号互相冲突或全站指向不统一。本文按從頁面自身到目标頁、再到内鏈與 sitemap 的顺序,梳理核對步骤與常见冲突场景,帮助判断该改标簽還是该统一其他入口。

網站收錄

canonical 寫了却没生效:規范标簽與收錄地址不一致时的核對顺序

canonical 只是提示,不是指令

在 HTML 里寫一行 canonical,很多人預設它會立刻决定收錄哪個地址。實际上它更像一條建议:告诉搜尋引擎“這一组内容相近的頁面里,我認為哪個是主版本”。搜尋引擎會结合抓取到的内容、内鏈、外鏈和站点结构来判断,未必照做。所以出現“canonical 指向 A,结果 B 自己也被收錄”並不奇怪。要排查的是這條建议為什么没被采纳,而不是反复修改标簽本身。

先確認几件事

在動手改之前,按下面的顺序核對一遍,能排除大部分基础問题:

  1. 頁面本身能不能正常抓取:狀態碼是 200,没有被 robots.txt 挡住,也没有被 meta robots 或 X-Robots-Tag 标成 noindex。
  2. canonical 目标地址能不能被索引:目标頁如果本身是 noindex、404、301 跳走,或者被 robots 屏蔽,那這條 canonical 基本無效。
  3. canonical 用的是绝對地址還是相對地址:相對路径拼接时容易解析错,尤其是带參數、大小寫不统一的地址。
  4. HTML 里的 canonical 和 JS 注入的 canonical 是否一致:两者不一致时,搜尋引擎可能取错那一個。

几種常见的冲突场景

canonical 和 noindex 同时出現

這组信号是矛盾的:noindex 说“別收錄我”,canonical 说“把權重给另一個地址”。搜尋引擎通常優先處理 noindex,结果是這個頁面不收錄,權重也不一定按你想的方式传递。如果本意是把頁面並入主版本,就不该同时留 noindex。

两個地址互相 canonical

A 頁 canonical 指向 B,B 又 canonical 指回 A。這種閉环會让搜尋引擎無法判断主版本,最後可能各自保留,也可能自己挑一個。正确的寫法是單向指向,全站保持同一個主版本地址。

分頁與 canonical 混用

列表第 2 頁、第 3 頁如果都 canonical 到第 1 頁,等于告诉搜尋引擎後面几頁不用單獨收錄。這本身是一種取舍,但要注意:分頁里往往有通往詳情頁的内鏈,如果這些頁面不被抓取,新頁面的發現路径也會變窄。

改完之後怎么看效果

canonical 調整後,索引不會立刻同步。可以關注這几處:

  • 搜尋结果里實际展示的是哪個地址,可以用 site: 查询或直接搜尋标题確認。
  • Search Console 的“網頁”报告中,Google 選擇的規范網址是否和你的设定一致。
  • 该组 URL 的抓取记錄,看目标頁是否被正常抓取過。
  • 站内連結、sitemap、外部連結指向的是不是同一個版本。

如果這几處指向不一致,canonical 想生效就會很慢。把指向先统一,往往比反复改标簽更有效。

什么时候不该用 canonical

内容其實不同,只是模板相似,就不要硬指過去。比如不同商品、不同地区的服務頁,用戶看到的信息並不一样,强行合並會让其中一頁彻底失去被检索的机會。這種情况下,更该做的是把每頁的内容做差异化,而不是用 canonical 一刀切。

canonical 解决的是“重复版本選哪個”的問题,不是“内容不够好怎么办”的問题。两件事混在一起處理,往往會两邊都做不好。