網站收錄

canonical 指了 A,收錄的却是 B:合並信号為什么會失灵

頁面明明寫了 canonical,索引里却仍然是另一個 URL,這種情况並不少见。canonical 只是合並提示而非强制指令,本文梳理它常见的几種失效寫法——自引用缺失、指向不可索引地址、JS 注入、與其他信号矛盾——並给出一份可执行的自查顺序,帮你把主版本 URL 收敛清楚。

網站收錄

canonical 指了 A,收錄的却是 B:合並信号為什么會失灵

先分清 canonical 能做什么

canonical 标簽是给搜尋引擎的一個合並提示,不是一條强制指令。搜尋引擎在决定哪一版 URL 進入索引时,會综合内鏈、sitemap、外鏈、内容相似度等信息,canonical 只是其中一項信号。所以“寫了 canonical,收錄的却是另一版”並不算異常,多數情况下是這套信号之間互相打架。

它主要解决的是:同一份内容可以通過多個地址訪問(带參數、大小寫不同、带不带 www、打印版等),你希望哪一版承担權重。

常见的不生效寫法

1. 自引用 canonical 缺失或寫得不一致

每個可索引頁面最好寫一條指向自身的 canonical,並且這個地址要和頁面真實地址完全一致——协议、主机名、路径、末尾斜杠、大小寫都算。如果主版本頁面自己寫了一條指向別處的 canonical,它就會被系統当成副本看待。

2. 指向了一個不可索引的 URL

  • 指向的地址返回 301、302 或 404;
  • 指向的地址本身带 noindex;
  • 指向的地址被 robots.txt 屏蔽。

這几種情况下合並信号基本會被忽略,搜尋引擎只能按自己的判断挑一版。

3. 由脚本注入或位置異常

canonical 放在 head 里最稳妥。如果是脚本動態插入,要確認渲染完成後确實存在,並且不要出現多條互相冲突的 canonical。頁面里出現两個不同的 canonical 地址,等于没寫。

4. 跨域 canonical 需要更多佐證

把 A 站頁面 canonical 到 B 站,處理會比較谨慎。两站内容高度一致、又有互相指向的内鏈时收敛會快一些;否則很可能被直接忽略。

5. 和其他信号自相矛盾

canonical 说 A 是主版本,但 sitemap 里只提交了 B,站内連結也大量指向 B,這就是自己给自己制造矛盾。信号越统一,收敛越快。

一份可执行的自查顺序

  1. 先确定你真正想保留的主版本 URL,把完整地址记下来,包括协议和末尾斜杠。
  2. 查看源代碼,確認頁面上 canonical 的實际取值;如果是 JS 頁面,對比渲染前後是否一致。
  3. 訪問 canonical 指向的地址,確認它返回 200、可以被索引、没有 noindex,也没有被 robots.txt 拦住。
  4. 检查 sitemap、内鏈、面包屑、结构化資料里的 URL 是否都指向同一個版本。
  5. 排查參數、大小寫、斜杠造成的多種變体,逐一收敛到主版本。
  6. 在 Search Console 的 URL 检查里查看 Google 選定的規范網址,和自己的预期做對照。

几個容易忽略的细节

  • 分頁不要全部 canonical 到第一頁,那样會抹掉後續頁面的入口價值,一般让每頁自引用更合适。
  • 移動版和桌面版互相标注时,canonical 與 alternate 別寫反。
  • HTTP 與 HTTPS、带 www 與不带 www,只保留一套,其余用 301 统一。
  • canonical 管的是合並,不管發現。指望它加快收錄,方向就错了。
canonical 的作用是把信号摆清楚,而不是替你决定结果。真正進索引的是哪一版,仍取决于這套信号加上抓取和内容判断的综合结果。

調整之後不建议频繁改動,给系統一点重新评估的時間,再回看選定規范網址是否已经收敛。如果長期不一致,優先检查第 2、3 步,多數問题出在 canonical 指向的地址本身不可索引。