網站收錄

canonical 被改寫了:索引選了另一個版本时的核對顺序

你指定了 A 版本做 canonical,Google 却把 B 版本收進了索引,或搜尋结果落地到了另一個 URL。這多數不是收錄故障,而是索引在你给出的多個信号之間自行做了選擇。本文按頁面内信号、站内信号、等價版本、處理节奏的顺序,梳理一套可执行的核對流程,避免在信号没统一前反复提交。

網站收錄

canonical 被改寫了:索引選了另一個版本时的核對顺序

你在搜尋结果里点開自己的頁面,结果落地到了另一個 URL;或者在後台看到,自己指定的 A 版本做 canonical,Google 却把 B 版本收進了索引。這類情况在收錄核對里很容易被当成“收錄出错”,但多數时候,是索引在你给出的多個信号之間做了它自己的選擇。

先分清:是收錄的 URL 變了,還是只換了展示 URL

這两個問题處理方式完全不同,核對前先確認属于哪一種。

  • 收錄版本變化:索引里存的就是另一個 URL,原頁面可能整個被合並過去。
  • 展示 URL 變化:索引版本没變,只是结果頁顯示的連結換了一個,通常和地区、设备或查询词有關。

判断方法很简單:在站点的抓取日誌里看 Googlebot 主要抓的是哪個版本,再對比索引报表里的狀態。如果日誌里目标版本一直在被抓,索引里却是另一個,那才是真正的 canonical 選擇問题。

核對顺序:從頁面内信号到站内信号

1. 頁面上的 canonical 本身是否有效

  • 同一個頁面是否出現了多個 canonical 标簽,互相打架。
  • 寫法是否稳定,是绝對地址還是相對地址,有没有在模板里被拼错成固定值。
  • 指向的目标是否返回 200,而不是 301 鏈、404 或需要登入才能訪問。
  • 是否和 noindex 同时出現。两者共存时,信号是矛盾的,Google 往往按自己的判断走。
  • 目标 URL 是否被 robots.txt 屏蔽,或本身带參數、大小寫不一致。

2. 站内其他信号是否指向同一版本

canonical 只是众多信号之一。如果其他位置指向不同版本,Google 更可能采纳多數派。

  • 内鏈:導航、面包屑、相關推荐里連結的是哪個版本。
  • 站点地图:sitemap 里的 loc 是否和 canonical 一致。
  • 重定向鏈:舊版本是 301 到 A 還是到 B,鏈條是否超過一跳。
  • 多語言或分地区頁面:hreflang 指向的版本是否和 canonical 冲突。

3. 是否存在其他可抓取的等價版本

  • http 與 https、带 www 與不带 www 是否都能打開且返回 200。
  • 大小寫、结尾斜杠、index.html 這類差异是否各自可訪問。
  • 带跟踪參數(utm、ref、排序參數)的版本是否被内鏈或外鏈大量引用。

如果這些版本都能正常返回内容,等于同时给索引提供了多個候選,選擇權就交出去了。

常见的几個触發條件

  • canonical 指向的頁面内容更少、加载更慢,或经常返回 5xx、超时。
  • 两個版本内容差异很小,Google 判断合並更合适。
  • 模板、CMS 或插件自動生成了 canonical,运营端並不知情。
  • 頁面经過多次改版,舊 canonical 残留,與新的設定冲突。
canonical 是提示,不是命令。站内信号越一致,Google 越没有理由自己另選一個。

處理顺序與观察节奏

  1. 先確認到底哪個版本在日誌里被抓得最多,別急着改設定。
  2. 统一頁面内 canonical、内鏈、sitemap 三處指向,让它們说同一件事。
  3. 如果两個頁面确實應该合並,優先用 301,而不是只留一個 canonical 标簽。
  4. 修改後观察目标版本是否被抓取正常,有無 5xx 或超时。
  5. 用索引核對工具查看“Google 選擇的 canonical”,但注意它和實际索引之間存在滞後。

不要在信号還没统一前反复提交或频繁改動,那只會让抓取和索引更难判断哪個才是你想要的版本。

两個容易弄反的点

  • 给错誤版本加 noindex 又想靠 canonical 传递權重,两者同时存在时通常不會按你的预期执行。
  • canonical 指向的那個頁面本身設定了 noindex,等于把索引引向一個不允许收錄的地址。

把這几步按顺序走完,多數“canonical 被改寫”的情况都能定位到具体是哪一层信号没對齐,而不是笼统地归结為收錄失敗。