站点运营

站点运营:canonical 标签自查,别让同一篇内容互相争入口

canonical 用来说明页面的规范地址,但写错、写多、写反都会让爬虫和访客走到不同入口。本文从常见场景出发,整理一份可执行的自查清单,包括自引用、分页、筛选参数、多域名和内容聚合页,并说明如何用抓取日志和工具验证,减少重复 URL 带来的抓取浪费。

站点运营

站点运营:canonical 标签自查,别让同一篇内容互相争入口

canonical 标签的作用很直接:告诉搜索引擎,这一组相似页面里,哪个地址才是你希望被当作规范版本的那个。它不负责提升排名,也不保证被收录,但写对了能减少重复 URL 的出现,让站内入口更集中。写错了,反而可能把爬虫引到不存在的地址,或者让同一篇内容被拆成好几个版本。

先确认哪些页面需要 canonical

不是每个页面都必须加 canonical,但以下几类页面值得优先检查:

  • 同一篇内容有多个访问地址,比如带和不带参数、带和不带 www、带和不带末尾斜杠。
  • 列表页的筛选、排序、分页参数,生成大量内容相近的 URL。
  • 内容聚合页、标签页、专题页,与正文页存在部分重叠。
  • 多域名或子域名指向同一套内容,例如主站与镜像站、m 站与 PC 站。
  • 文章被其他站点转载或同步,站内也出现了不同路径的副本。

常见错误:canonical 写反、写多、写空

1. 指向了不相关或打不开的地址

有些 canonical 是从模板里复制来的,结果每个页面都指向首页,或者指向一个已经下线的 URL。爬虫遇到这种情况,会降低对标签的信任,甚至不再把它当作规范提示。检查时可以直接打开 canonical 里的地址,确认状态码是 200,内容与当前页确实属于同一主题。

2. 一个页面出现多个 canonical

模板和插件各输出一次,就会出现多个 rel="canonical"。搜索引擎通常只会取其中一个,也可能全部忽略。用浏览器查看源代码,搜索 canonical,确认每个页面只出现一次,并且指向的地址是绝对 URL。

3. 分页与 canonical 的冲突

列表页的分页最好自引用,也就是第 2 页的 canonical 指向第 2 页本身,而不是全部指回第 1 页。全部指回第 1 页会让后续分页很难被发现,相当于把后面几页从 URL 发现链路里摘了出去。如果确实不希望分页被单独处理,也要结合站内链接和站点地图一起判断,而不是只靠 canonical 一刀切。

4. 与内链、站点地图不一致

canonical 说 A 是规范地址,但站内链接和站点地图都在指向 B,爬虫会更倾向相信实际链接。自查时要保证三处指向同一个地址:canonical、站内主要内链、站点地图。至少不要让它们互相矛盾。

一份可执行的自查清单

  1. 随机抽取栏目页、正文页、标签页、搜索结果页各若干,查看源代码中的 canonical。
  2. 确认每个 canonical 都是绝对 URL,且能正常打开。
  3. 确认没有多个 canonical 同时输出。
  4. 确认分页、筛选参数页的 canonical 策略符合预期,没有把有效入口全部指回第一页。
  5. 对比内链和站点地图中的地址,看是否与 canonical 一致。
  6. 检查多域名、多协议、多大小写版本,是否有统一跳转或统一 canonical。
  7. 观察抓取日志里这些地址的访问情况,看重复 URL 是否在减少。

如何验证和跟进

验证 canonical 不需要复杂工具。用浏览器的“查看源代码”就能看到标签,用抓取工具批量抓一遍站内主要页面,也能快速发现多个 canonical 或指向错误。再结合服务器日志,观察同一篇内容的多个 URL 是否还在被反复抓取。如果某个参数组合已经被 canonical 指向规范地址,但日志里仍然大量出现,就要回头检查内链或站点地图是否还在输出这些地址。

canonical 不是万能开关。它只是告诉爬虫你的偏好,真正决定 URL 发现和抓取路径的,仍然是站内链接、站点地图和服务器返回的状态码。

站点运营里,这类小标签很容易被忽略,但它影响的是爬虫如何理解你的 URL 结构。把 canonical 当成一次常规自查项,和 sitemap、内链、重定向一起看,比单独改一个标签更有效。