站点运营

站点运营:canonical 自查,把规范版本指对再谈别的

canonical 是页面自我声明规范版本的一种方式,写对了能帮搜索引擎整合重复信号,写错了则可能牵连一整组页面。这篇文章梳理了常见的几类写法问题,给出一份可以照着走的自查顺序,并说明它能做什么、不能做什么。

站点运营

站点运营:canonical 自查,把规范版本指对再谈别的

为什么一条 canonical 会牵连一组页面

canonical 的作用是让页面自己说明:在若干个内容相近的地址里,哪一个才是主版本。它本身不是强制指令,但写错之后,搜索引擎可能把信号集中到一个不该集中的地址上,结果是一整组页面在索引里表现异常,而不是单个页面出问题。更麻烦的是,这类问题通常不会报错,页面上看不出任何异样。

所以它适合放进站点的例行自查里,尤其是模板改动、批量导入内容、改版迁移之后。

常见的几类写法问题

  • 模板写死成固定地址:整站所有页面都输出同一个 canonical,最典型的是全部指向首页。这等于告诉搜索引擎,成千上万个页面其实是同一个页面的副本。
  • 自指缺失:详情页写了,列表页、分页、标签页却没写。缺失时搜索引擎只能自己判断,判断结果未必和你的规划一致。
  • 指向了不可用的地址:canonical 指向的 URL 返回 404、302、301,或者本身带着 noindex。目标地址自己都不成立,这个声明就没有意义。
  • 协议与域名混用:http 页面指向 https,不带 www 的指向带 www 的,或者末尾斜杠写法不统一。看似小事,实际会造成两个版本被反复来回指认。
  • 一条页面出现多条 canonical:多来自主题模板、插件、编辑器各自输出一次,搜索引擎通常会忽略全部。
  • 由 JS 后写入:如果标签是脚本执行后才插进 head,能不能被读到就取决于渲染结果,稳定性不如直接写在 HTML 里。

按这个顺序走一遍自查

  1. 抓取页面原始 HTML,确认 head 里存在 canonical,并且只有一条。
  2. 确认它是绝对地址,协议、域名、路径大小写与当前页保持一致。
  3. 确认自指:详情页指向自己,栏目页指向自己;分页页是指向自己还是指向第一页,全站策略要统一,不要一半一半。
  4. 打开 canonical 指向的地址,确认返回 200,且没有被 noindex、没有被 robots.txt 挡住。
  5. 把 canonical、Sitemap、hreflang、分页链接放在一起看,确认它们没有互相矛盾。
  6. 抽样覆盖不同页面类型:首页、栏目页、详情页、标签页、搜索结果页、移动端版本,至少各取两三个。
  7. 改版或目录迁移后,把上面几步再完整走一次,重点看旧地址是否还在被引用。

它做不到的事

canonical 是一种建议,不是重定向。它不能让旧地址失效,也不能把两个主题不同的页面强行合并成一个。多语言、多地区的版本各有各的定位,本质上不该用 canonical 互相指认。低质量页面也不会因为指向了一个好页面就变好。

真正需要转移权重时,应该用 301;需要整组页面退出索引时,应该用 noindex 或 robots.txt。canonical 只处理同一内容存在多个地址这一种情况。

维护节奏怎么定

不需要天天查。把几个触发点记住就够了:模板或主题升级之后、新增一种页面类型之后、批量导入或程序生成内容之后、域名或目录结构变动之后。每次抽检十几个 URL,比隔半年全站扫一遍更容易发现问题,也更容易定位是哪次改动引入的。

顺带把检查结果记在一个表里:页面类型、canonical 目标、是否自指、目标状态码、检查日期。下次改动前后对照一下,能省不少排查时间。