同一篇内容,如果可以通过多个地址打开,蜘蛛就可能把它们当成不同页面。canonical 标签的作用,是告诉蜘蛛哪个地址是主要版本。它不是收录开关,也不能代替重定向,但在参数、打印页、移动端等场景里,能把重复入口说清楚。
先弄清 canonical 解决什么问题
当站点存在多个 URL 指向相似内容时,蜘蛛需要判断哪个版本更值得保留。canonical 是一种提示,帮助它把权重和信号集中到主版本上。常见重复入口包括:
- 带 www 与不带 www 的域名同时可访问;
- http 与 https 并存;
- 列表页带排序、筛选、跟踪参数;
- URL 大小写不同、结尾斜杠不同;
- 打印页、AMP 页、移动端独立域名;
- 内容被多个栏目或专题引用。
如果这些入口都返回 200 且各自输出不同 canonical,蜘蛛就会收到混乱信号。
canonical 自查清单
可以从下面几项开始排查,优先处理模板批量输出的问题。
- 是否每页都有 canonical:详情页、栏目页、聚合页都应检查。缺失时,蜘蛛只能自行判断。
- 指向的地址能否直接访问:canonical 应指向 200 状态的主版本,不要指向 301、302 或 404 地址。指向跳转地址会让蜘蛛多走一步。
- 是否与内链、站点地图一致:如果内链和 sitemap 大量使用带参数地址,而 canonical 指向无参数版本,蜘蛛仍可能先抓到参数页。最好把站内入口也统一。
- 分页不要全部指向第一页:把第 2、3 页的 canonical 都指向第 1 页,可能让后续内容难以被发现。比较稳妥的做法是让每页 canonical 指向自身,或按实际策略处理。
- 移动端与桌面端要对应:如果使用独立移动域名,需要检查两边的 canonical 是否互相指向正确的对应页面,而不是都指向首页。
- 避免 canonical 链:A 指向 B,B 又指向 C,会增加蜘蛛的理解成本。尽量让所有重复版本直接指向同一个主版本。
- 改版与迁移后要更新:换域名、改目录、调整 URL 规则后,旧模板里的 canonical 可能还在指向旧地址,需要一起改掉。
- 模板输出要抽查:列表页、标签页、搜索结果页、用户中心页,容易出现 canonical 指向错误或动态输出异常。
日常维护的几点建议
canonical 不需要频繁调整。每次改动前,先确认主版本地址是否稳定,再检查相关页面是否同步。可以用抓取工具抽查一批 URL,看 canonical 输出是否一致;也可以结合服务器日志,观察蜘蛛是否还在反复抓取重复入口。
canonical 是提示,不是命令。它需要和重定向、robots、内链、站点地图配合,才能让抓取路径更清晰。
如果站点规模较大,建议把 canonical 检查纳入上线前验收清单。新栏目、新模板、新参数规则上线时,先抽几个页面看看输出,比事后批量修复更省事。