网站收录

canonical 写偏了:收录归属被自己搅乱的常见情况

canonical 是建议而非指令,写偏时会直接扰乱收录归属。本文梳理指向跳转地址、目标页不可索引、多标签冲突、内容并不相同、分页统一指首页等常见写法,并给出一套从页面是否该收录、自指核对、目标页可抓取性到信号一致性的自查顺序。

网站收录

canonical 写偏了:收录归属被自己搅乱的常见情况

站内内容重复时,最常见的处理办法是加 canonical 标签,告诉搜索引擎“几个地址里,哪个才是正式版本”。但实际操作中,canonical 常常不是没起作用,而是被写成了另一种问题:本来自指的页面被指向别处,或者指向了一个根本不能作为正式版本的地址,结果收录归属越来越乱。

canonical 只是提示,不是命令

先说一个容易被误解的前提:canonical 是给搜索引擎的建议,不是强制指令。系统会结合内链、sitemap、重定向、页面相似度等信息综合判断,如果这些信号相互矛盾,canonical 可能被忽略。所以排查时不要只盯着这一行代码,要把它和别的信号放在一起看。

几类常见的写偏方式

  • 指向跳转地址:canonical 指向的 URL 会 301 到别处。此时应该直接指向最终地址,中间多一层没有意义。
  • 指向不可索引的页面:目标页被 robots.txt 屏蔽、带 noindex,或者返回 404、5xx。正式版本自己都进不了索引,合并自然无从谈起。
  • 多个 canonical:模板和 CMS 插件各输出一份,HTML 里出现两条不同地址。搜索引擎通常只能选一条,或者直接忽略。
  • 内容并不相同:把两个主题不同的页面用 canonical 强行合并,属于误用;canonical 用于高度相似或完全相同的正文,不用于“权重传递”。
  • 相对路径或大小写、协议不一致:多数情况能被解析,但和实际地址不逐字一致时,容易让判断产生偏差。
  • 分页页面全都指向第一页:这是一种取舍,不是绝对错误,但会让后续分页里的内容失去被发现的机会,需要结合业务决定。
  • 靠 JS 动态写入:如果 canonical 只有脚本执行后才出现,要确认渲染环节能读到它,否则抓取早期看到的页面是缺失这个信号的。

按顺序自查一遍

  1. 确认这个页面本身是否应该被收录。如果内容单薄、只是聚合入口或临时页面,该做的是 noindex 或收敛入口,而不是加 canonical。
  2. 检查 canonical 是否为自指(默认情况应当自指),且与实际地址逐字一致,包括协议和大小写。
  3. 打开 canonical 指向的地址,确认返回 200、没有 noindex、没有被 robots.txt 屏蔽,并且能被正常抓取。
  4. 核对该地址是否出现在 sitemap 中、是否在站内有正常入口、内链是否也指向它。信号一致时,判断成本最低。
  5. 处理完观察一段时间,用站内搜索或 URL 检查工具看归属是否收敛,不要当天改当天就下结论。

别把 canonical 和另外两件事混在一起

一是抓取与收录的区别:canonical 影响的是“收录哪一个”,前提是相关 URL 已经被抓取。目标页长期抓不到,合并效果就无从体现。二是重复内容与收录取舍的区别:重复内容不等于惩罚,很多情况下搜索引擎会自行选择版本,canonical 只是降低它选错的概率。

一句提醒:canonical、noindex、robots.txt、重定向是四件互相独立的事,用错组合时,经常出现“以为屏蔽了却还在收录”或“以为合并了却两个都在”的情况。

如果站内确实存在大量参数页、筛选页,与其逐页纠 canonical,不如先从入口和链接结构上减少低价值 URL 的产生,再处理剩下的部分,成本会低很多。