网站收录

canonical 指向自己、指向别处或干脆不写:规范标签的选择与自查顺序

canonical 是偏好表达,不是强制指令。本文拆解指向自己、指向别处与不写三种写法各自适合什么场景,列出让 canonical 不被采纳的几类常见原因,并给出一条可执行的自查顺序,帮助同一内容的多个 URL 逐步收口。

网站收录

canonical 指向自己、指向别处或干脆不写:规范标签的选择与自查顺序

canonical 的作用是表达偏好,不是下达命令。搜索引擎会参考它,但最终把哪个 URL 当作规范版本,还要综合站内链接、站点地图、外链、重定向等一整套信号。所以常见的情况是:标签写得很认真,索引里留下的却是另一个版本。

先分清重复的是哪一类

不同的重复形态,处理方式差别很大,动手前先归类:

  • 同一内容多个 URL:参数排序、大小写、末尾斜杠、打印版、跟踪参数。
  • 内容相近但并非完全相同:列表翻页、筛选结果、同款不同规格。
  • 跨域或跨子域:www 与非 www、移动站与主站、测试域名上线后残留。

canonical 没被采纳的常见原因

  • 目标 URL 本身不可索引:canonical 指向的页面是 404、301、带 noindex 或被 robots.txt 屏蔽,等于把票投给一个进不来的页面。
  • 抓取阶段看不到:canonical 由 JavaScript 注入,渲染队列还没轮到,抓取时拿到的初始 HTML 里什么都没有。
  • 信号互相打架:canonical 指向 A,内链、站点地图、面包屑却都指向 B。
  • 各版本各自为政:每个参数页都 canonical 到自己,表面上写了标签,实际上没有收口。
  • 写法不规范:用了相对路径,或把带参数的地址写进标签,解析结果和预期对不上。

建议的自查顺序

  1. 先拉出重复 URL 清单:索引状态报告、服务器日志、站点地图三处取交集,比单看一处靠谱。
  2. 检查目标 URL 的可索引状态:返回码、meta robots、HTTP 头里的 X-Robots-Tag、robots.txt 逐项过一遍。
  3. 确认 canonical 出现在初始 HTML 中,别只在浏览器渲染后的源码里查看。
  4. 对齐站内信号:内链、站点地图、分页链接、hreflang 都指向同一个版本。
  5. 确认标签使用绝对地址,协议、主机名、路径与实际访问完全一致。
  6. 改完观察一个完整抓取周期,看索引中的规范版本是否逐步收敛,不要当天就下结论。

什么时候该用 301 而不是 canonical

如果旧 URL 已经确定不再使用,两个版本之间是永久替代关系,301 更直接,也更省事。canonical 更适合两个版本都需要保留、用户都可能访问的场景,比如排序参数、打印版、渠道跟踪参数。

两者也可以配合,但方向必须一致:不要一边 canonical 到 A,一边又 301 到 B,那样等于自己给自己制造矛盾。

写法上的几个细节

  • 用绝对地址,包含协议和主机名。
  • 一个页面只写一个 canonical,重复出现容易造成解析歧义。
  • 不要 canonical 到会跳转的地址,直接写最终地址。
  • 分页页面统一 canonical 到第一页,会让后续页面的内容失去被单独选中的机会,通常不建议。
  • hreflang 与 canonical 要配套,不要 hreflang 指向 A 而 canonical 指向 B。

别忽略页面本身的差异

如果两个 URL 的内容相似度只有七八成,搜索引擎完全可能把它们当成不同页面。这时与其反复调标签,不如先回答一个问题:这两个页面到底该不该同时存在。合并内容、补足差异,或者干脆下线一个,往往比改标签更有效,也更省后续维护成本。

canonical 是在表达偏好,不是在做决定;它能否生效,取决于整站信号是否指向同一个方向。