网站收录

canonical 指向自己还是主页面:重复内容收敛时的判断依据

canonical 是提示而不是命令,用错方向反而会让页面失去收录机会。本文说明哪些页面应当自指、哪些应指向主版本,列出指向跳转页、指向 noindex 页、全站共用一个值等常见误用,并给出与内链、sitemap、301 的配合方式以及验证生效的检查点。

网站收录

canonical 指向自己还是主页面:重复内容收敛时的判断依据

站内出现两个内容几乎一样的 URL 时,很多人的第一反应是加一条 canonical。但 canonical 具体该指向哪里,往往没想清楚就抄了模板,结果把本来有机会被收录的页面也一起交了出去。

canonical 是提示,不是命令

rel="canonical" 的作用是告诉搜索引擎:这一组 URL 里,我认为哪个是主要版本。它是信号,不是重定向,也不阻止抓取。搜索引擎会结合内链、sitemap、页面内容、外链等因素综合判断,可能采纳,也可能不采纳。

所以写 canonical 要有个前提:页面之间确实高度重复,或互为变体,才需要收敛。内容本来就不同的两个页面硬加 canonical,只会让其中一个白白失去被收录的机会。

大多数页面应该指向自己

每个正常页面最好都有一条指向自身的 canonical。看起来多余,但确实有用:

  • 模板自动生成的 canonical 一旦出错,比如域名或语言写错,自指能避免它被错误继承;
  • 减少参数、大小写、协议等变体带来的歧义;
  • 内容被其他工具采集、拼接后,原始版本是哪一条仍然说得清。

什么时候该指向别的 URL

比较典型的有几类:

  • 参数变体:同一篇内容因为跟踪参数、排序参数产生了多个 URL,把带参数的版本指向不带参数的版本;
  • 打印页、纯文本页:一般指向正常浏览版本;
  • 多域名或 www 与非 www 同时可访问:可以指向主域名版本,但更稳妥的做法仍是 301;
  • 同一内容被放在多条路径下:比如同时出现在两个栏目里,需要选出主路径。

分页不要简单地全部指向第一页

把 page/2、page/3 全部 canonical 到第 1 页,是常见操作错误。这些页面各自有不同内容,通常应自指,再依靠内链让抓取路径保持通畅。

几种常见的误用

  1. canonical 指向一个会 301 的 URL。链条一长,信号容易被忽略,应直接写成最终地址。
  2. canonical 指向被 noindex 的页面。两个信号互相矛盾,结果可能是两边都进不了索引。
  3. 全站共用一个 canonical。多半是模板变量没渲染出来,等于把整站内容都指向同一页。
  4. canonical 指向不存在的 URL,或相对路径写错。检查时以浏览器「查看网页源代码」里的实际输出为准,而不是模板文件。
  5. 跨域 canonical 用得太随意。它可以是内容被转载后的补救手段,但如果目标站点不由自己控制,效果并不稳定。

和 sitemap、内链、重定向怎么配合

canonical 单独用效果有限,需要和其他环节说同一件事:

  • 内链尽量指向规范版本,别让用户和蜘蛛都涌向变体 URL;
  • sitemap 里只放规范版本,把变体排除在外;
  • 如果是永久迁移,比如换域名、改目录结构,用 301 而不是 canonical;
  • 规范版本的页面本身要可抓取、可索引、返回 200。
如果规范版本自己都没有入口链接,或者被 robots、noindex 挡住,canonical 写得再规范也没有意义。

怎么确认有没有生效

几个可操作的检查点:

  1. 用站内工具或抓取脚本抽查页面的 canonical 实际输出,确认没有空值、没有拼接错误;
  2. 在搜索平台的 URL 检查工具里,看「用户声明的规范网址」和「系统选择的规范网址」是否一致;
  3. 隔一段时间再看,用索引状态查询确认变体页面是否在收敛;
  4. 对照抓取日志,看看变体 URL 的抓取频次有没有下降。

canonical 解决的是「选哪个版本」的问题,解决不了内容本身质量低的问题。如果两个页面都只是薄内容的模板页,收敛之后剩下的那一个,也不一定就会被收录。