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、站内主要内链、站点地图。至少不要让它们互相矛盾。
一份可执行的自查清单
- 随机抽取栏目页、正文页、标签页、搜索结果页各若干,查看源代码中的 canonical。
- 确认每个 canonical 都是绝对 URL,且能正常打开。
- 确认没有多个 canonical 同时输出。
- 确认分页、筛选参数页的 canonical 策略符合预期,没有把有效入口全部指回第一页。
- 对比内链和站点地图中的地址,看是否与 canonical 一致。
- 检查多域名、多协议、多大小写版本,是否有统一跳转或统一 canonical。
- 观察抓取日志里这些地址的访问情况,看重复 URL 是否在减少。
如何验证和跟进
验证 canonical 不需要复杂工具。用浏览器的“查看源代码”就能看到标签,用抓取工具批量抓一遍站内主要页面,也能快速发现多个 canonical 或指向错误。再结合服务器日志,观察同一篇内容的多个 URL 是否还在被反复抓取。如果某个参数组合已经被 canonical 指向规范地址,但日志里仍然大量出现,就要回头检查内链或站点地图是否还在输出这些地址。
canonical 不是万能开关。它只是告诉爬虫你的偏好,真正决定 URL 发现和抓取路径的,仍然是站内链接、站点地图和服务器返回的状态码。
站点运营里,这类小标签很容易被忽略,但它影响的是爬虫如何理解你的 URL 结构。把 canonical 当成一次常规自查项,和 sitemap、内链、重定向一起看,比单独改一个标签更有效。