站点运营

Canonical 规范链接自查:让同一篇内容只有一个“正主”

同一篇内容常常能用好几个地址打开:域名变体、追踪参数、尾斜杠都会生成新地址。canonical 的作用是告诉搜索引擎哪一份是主版本。这篇文章梳理常见的多地址来源、容易踩的坑,以及一套能落地的日常自查步骤。

站点运营

Canonical 规范链接自查:让同一篇内容只有一个“正主”

站点跑久了,经常会遇到同一篇内容能用好几个地址打开。带 www 和不带 www 各一份,加个跟踪参数又是一份,列表页和详情页还可能撞在一起。这时候搜索引擎看到的是多份“看起来一样”的内容,需要你自己告诉它哪一份才是正主。canonical(规范链接)就是干这个的。

先搞清楚 canonical 解决什么问题

canonical 标签写在页面 head 里,指向你希望被当作主版本的地址。它的作用是给出“合并信号”,而不是屏蔽。也就是说,搜索引擎可能会把几个相似地址的信号合并到 canonical 指向的那个地址上,但最终如何处理仍由搜索引擎判断,不是写上去就一定生效。

要区分清楚三件事:

  • 301 重定向:真正把用户和蜘蛛挪到新地址,旧地址不再独立存在。
  • canonical:多个地址都能正常访问,但你指定其中一个为主版本。
  • robots.txt 屏蔽:直接不让抓,但已经被抓到的旧地址可能仍留在索引里。
能重定向的就别用 canonical 兜底;canonical 是给“确实需要并存”的地址准备的。

自查:常见的多地址来源

1. 域名与协议变体

  • http 与 https 是否都还能访问,canonical 是否统一指向 https。
  • 带 www 与不带 www 是否有一个是重定向,另一个才是主站。
  • 大小写混用:/About 和 /about 是否都能打开。

2. 尾斜杠与路径写法

/post/1 和 /post/1/ 在很多服务器上都能访问。如果两者都返回 200,就要确认 canonical 是否只指向其中一种,并保持一致,别这篇文章指带斜杠、那篇指不带。

3. 追踪参数与筛选参数

推广链接带的 utm 参数、列表筛选带的排序参数,都会生成新的地址。建议在 canonical 里始终输出不带这些参数的干净版本。如果参数组合太多,还要配合 robots 规则或链接规范一起处理。

4. 分页、打印页、移动版

  • 分页的第 2、3 页通常应该自指 canonical(指向自己),而不是全部指回第 1 页。
  • 打印页、纯文本版一般指向对应的正文页。
  • 独立移动版地址(如 m 站)需要与桌面版互相标注,并确认 canonical 指向哪一边。

容易踩的几个坑

canonical 指向了不能正常返回的地址

指向 404、指向 301 的中间地址、指向被封禁的地址,都会让信号变得模糊。canonical 的目标地址应当是返回 200 的最终地址。

一个页面写了多个 canonical

模板拼接、插件叠加都可能造成输出两个甚至更多 canonical。搜索引擎通常会忽略全部或自行选择,等于白写。建议直接在页面源码里搜一下 canonical 出现的条数。

全站模板里 canonical 写死成首页

这是最伤的一种:所有页面都指向首页。结果是大量内容页被当成首页的副本。模板里应该是动态输出当前页面的规范地址。

canonical 与 hreflang 互相打架

多语言站点里,如果每个语言版本的 canonical 都指向同一个语言版本,其他语言页就可能被合并掉。一般是各语言页自指 canonical,再用 hreflang 互相关联。

日常怎么查

  1. 抽一批代表页面(首页、栏目页、详情页、分页、带参页),打开源码看 canonical 的实际输出。
  2. 把站内主要地址和 canonical 列表对照,找出指向异常、指向非 200、指向站外的条目。
  3. 看服务器日志里被抓取的带参地址,判断哪些本该合并到正文。
  4. 如果地址结构有过调整,检查老页面的 canonical 是否还指着一个早已废弃的地址。
  5. 每次改模板、加插件、换域名之后,把 canonical 列入回归检查项。

canonical 不是写完就不用管的东西。站点结构、URL 规则、模板一变动,它就可能失准。把它当成一项常规巡检,比等到发现流量分散了再回头找原因省事得多。