網站收錄

canonical 指错之後:頁面為什么没進索引,按什么顺序核對

canonical 寫错时,頁面往往不是没被讀到,而是主動把自己降級成副本,索引里留下的是另一個地址。本文梳理模板寫死、指向跳轉目标、指向不可索引地址等常见错誤,以及 canonical 與 noindex 叠加时的處理,並给出從原始响應到規范網址归属的核對顺序。

網站收錄

canonical 指错之後:頁面為什么没進索引,按什么顺序核對

canonical 标簽的作用是告诉搜尋引擎:這一组相似頁面里,哪個地址才是主要版本。它是一個提示,不是命令。但一旦寫错,结果往往不是“没有效果”,而是目前頁面主動把自己降級成副本,索引里留下的是另一個地址。

先確認索引里留下的是哪個地址

排查之前先確認問题的形態。如果收錄结果里出現的是另一個 URL,而目前頁面怎么查都進不了索引,那多半不是抓取問题,而是規范網址的归属問题。

  • 用 URL 检查工具對比“用戶声明的規范網址”與“搜尋引擎選擇的規范網址”是否一致;
  • 用 site: 加上頁面标题里的特征词,看命中的是哪個地址;
  • 對比站点地图、内鏈指向的地址與 canonical 指向的地址是不是同一個。

如果两者不一致,說明标簽被讀到了但没被采纳;如果两者一致、指向的却都不是目前頁面,那就是标簽本身寫错了。

常见的几種寫错方式

  • 模板寫死:列表頁、詳情頁共用一套模板,canonical 统一指向频道首頁或列表第一頁。
  • 指向跳轉目标:目前 URL 能正常訪問,canonical 却指向一個 301 之後才存在的地址,中間還夹着跳轉。
  • 指向不可索引的地址:canonical 目标本身是 404、被 robots 屏蔽或自身带 noindex,等于把信号交到了一個收不到的地方。
  • 分頁一律归第一頁:後續頁碼里的獨立條目因此長期不進索引。
  • 协议或主机名不一致:頁面實际在 https、带 www 的地址上,canonical 却寫成 http 或不带 www 的形式。
  • 带上參數:實际訪問的是干净地址,canonical 却寫成带追踪參數的版本。
  • 多語言互相指:各語言版本都 canonical 到同一個語言地址,其他語言頁面自然不會被單獨收錄。

canonical 與 noindex 同时存在

两個信号叠在一起时,處理方式並不總是可预期。如果頁面希望保留在索引里,就不要同时给出 noindex;如果頁面确實是重复副本、希望信号集中到主版本,用 canonical 指向主版本即可,不必再叠加 noindex。規則越简單,被正确执行的概率越高。

按這個顺序核對

  1. 抓取原始响應,查看 HTML 源碼里 canonical 的 href 原样,不要只看浏览器渲染後的 DOM。
  2. 確認這個 href 與實际訪問地址是否一致,自引用通常是最稳妥的寫法。
  3. 逐個訪問 canonical 目标,確認返回 200、未被 robots 屏蔽、自身没有 noindex。
  4. 检查站内是否有多條 URL 都指向同一個目标,這會让目标承担全部信号,其他頁面更容易被判定為副本。
  5. 把站点地图、内鏈、hreflang 與 canonical 對齐,让它們指向同一個地址。
  6. 改完後等待重新抓取,再回看“搜尋引擎選擇的規范網址”是否回到目前頁面。

什么情况下不该用 canonical

内容确實不同的頁面,不要為了“集中權重”硬合並。把不同主题的頁面 canonical 到一處,通常是既损失了這些頁面,也没让目标頁获得多少增益。只有当頁面主体内容高度一致、差异僅在參數、排序或展示形式时,才适合用 canonical 收敛。

canonical 是建议而不是指令。寫對只是让搜尋引擎少一次判断,不能保證一定被收錄;寫错却會让頁面長期處在副本狀態。

改完之後看什么

修改 canonical 後,索引狀態通常不會立刻變化,要等下一次抓取與重新评估。观察重点不是排名,而是抓取工具是否重新讀取了頁面、規范網址归属是否回到自己、站点地图里的地址與索引中的地址是否一致。如果反复改来改去,收敛時間可能被拉長,所以先定下唯一地址,再统一所有出口。