canonical 是什么——该设什么、不该设什么

讲清楚 canonical 标签:它做什么、Google 的信号优先级、以及那几个会悄悄毁掉收录的错误——已对照 Google 官方文档核对,2026 年 6 月。

canonical URL 是在告诉 Google「展示同一内容的这堆 URL 里,这个才是原版」。设对了,重复内容不会再吃你的排名;设错了,Google 会默默把你一半的页面从索引里踢掉。

一句话总结

  • 每个页面都加自指 canonical。截至 2026 年 6 月,Google 已经把它当成基本标配,而不是「加了更好」。
  • 真正的重复页(带参数的 URL、被转载的副本),让它们指向主 URL。
  • canonical 是一个很强的提示,不是命令。当你的其他信号互相打架时,Google 会、也确实会推翻它。
  • 千万别跨语言 canonical(语言用 hreflang),也别全指向首页(会让整站掉索引)。主机层面的归一要配 301,因为 canonical 本身不会把任何人跳转过去。

这个标签到底在做什么

<link rel="canonical" href="..."> 标签是为了解决 web 上的 URL 重复乱象:同一页在 www 和裸域名都能访问、带不带结尾斜杠、带 tracking 参数、分页、或不同语言变体。canonical 把这些都指向一个首选 URL,这样 Google 就会把排名信号(外链、内容质量)汇总到同一个页面上,而不是分散到一堆几乎一样的副本里。

关键在于:它只是众多信号之一。Google 自己的文档把它判定 canonical 时用到的信号做了排序:

信号强度(Google 说法)含义
301/308 跳转跳转目标应当成为 canonical
rel="canonical" 链接声明的 URL 应当成为 canonical
内链大多数页面链向的那个 URL 看起来像 canonical
sitemap 收录列进 sitemap 的 URL 会得到一点小推力

这些信号会叠加。一个页面既 301 跳到主 URL、又把主 URL 声明为 canonical、sitemap 里也只列主 URL,那 Google 得到的就是一个干净、一致的答案。信号互相矛盾,正是你会撞上「Google 选了另一个 canonical」的原因。

判断标准

  • Pages 报告里出现「Duplicate without user-selected canonical」或「Google chose different canonical than user」。
  • site:你的域名 同时返回 www. 版和裸域名版的同一篇文章。
  • 带 tracking 参数的 URL(?utm_source=...)被收录了,而干净版没被收录。
  • 同一篇内容你出了中英两版,Google 不知道排哪个。

实操步骤

  1. 审查现状。在 5-10 个页面 view source,搜 rel="canonical",确认每页有且只有一个,指向自己的公开 https、不带参数版本。一个页面有两个 canonical 跟一个都没有一样糟:Google 可能两个都不认。
  2. 挑一个主机:https://yoursite.comhttps://www.yoursite.com。另一个要 301 跳到它。光靠 canonical 不够;不配跳转的话,另一个主机照样能打开、照样在跟你抢。
  3. 分页列表(/blog/page/2)每页 canonical 指自己,不要全指 page 1。全指 page 1 等于告诉 Google 后面的页面都是重复内容,于是只出现在第 2 页之后的东西就再也不会被收录。注意 Google 从 2019 年起就不再把 rel="prev"/rel="next" 当索引信号了,所以现在分页就只靠自指 canonical 这一招。
  4. 带 tracking 参数的 URL,canonical 要把参数去掉:访问 ?utm_source=twitter 时仍然应该输出 <link rel="canonical" href="https://yoursite.com/articles/slug/">
  5. 多语言站,不要把 zh 页面 canonical 到 en 版本,或反过来。每个语言版本各自自指 canonical,互相用 hreflang 引用。canonical 和 hreflang 解决的是两件事:canonical 是在一堆重复里挑主版,hreflang 是在说「这几个是同一页的不同语言」。
  6. 部署后,在 Search Console URL Inspection 抽 3-4 个 URL,看「Google-selected canonical」是否和你声明的一致。不一致说明你的提示被覆盖了,先把那个打架的信号修掉,再去碰别的。

当 Google 推翻你的 canonical 时

Pages 报告里的「Duplicate, Google chose different canonical than user」状态,意思是你声明的 canonical 输给了一个更强或更一致的信号。按 Google 的排错文档,常见原因按踩坑频率排:

  • 内链跟你对着干。 你大多数页面都链向 URL A,但 A 的 canonical 却指向 B。内链是中等强度信号,足以盖过一个孤零零的标签。让你的内链指向 canonical 指的那个 URL。
  • sitemap 里写的 URL 跟 canonical 声明的不是一个。
  • 声明的 canonical 自己在跳转或者 404,Google 没法照办,只好退回去自己挑。
  • 存在一个权重更高的重复页(外链更多的采集站或转载方)。这是外链问题,不是标签问题。

把所有信号都对齐到同一个 URL,然后请求收录、等待重新抓取。canonical 改动不是即时生效的,要按天到周来算。

容易踩的坑

  • 把所有页面 canonical 到首页(坏掉的 CMS 插件、烂主题默认值的经典操作)。这等于告诉 Google 每个页面都是首页的副本,整站收录直接掉光。
  • 把中文页 canonical 到英文页。Google 会把中文页从中文索引里踢掉,你少一半流量。
  • canonical 指向一个返回 404301 的 URL。Google 会忽略并自己挑一个 canonical,通常挑错。
  • 用了 staging 域名的绝对 URL(staging.yoursite.com),上线时忘改。现在线上页面 canonical 指向了一个 Google 根本爬不到的非公开 staging。
  • canonical 和实际 URL 之间 http/https、www/非 www 不一致。必须一字不差完全一样;Google 偏好 https 版本,但不会替你默默纠正这种不一致。
  • canonical 指向带锚点的 URL(#section)。Google 直接忽略锚点,等于没设 canonical。

这篇适合谁

Search Console 已经显示了重复内容报告的站,或者同时有分页、tracking 链接、多子域名的任意组合。

这篇不适合谁

全新的 5 页小站、没参数、没分页、单语言。一个自指 canonical 就够了,等你扩张再回来看这篇。

FAQ

  • 什么叫自指 canonical?: 页面 canonical 指向自己干净的 URL。每个页面都应该有一个——告诉 Google「这就是这份内容的标准 URL」。这是最安全的默认值,能阻止 Google 自己挑一个奇怪的 canonical。
  • 我声明了 canonical,但 Google 选了另一个怎么办?: 通常是你的 canonical 和其他信号冲突——内链指向别的 URL、sitemap 里写的别的 URL、hreflang 引用的别的 URL。让所有信号一致,Google 就会尊重你的提示。
  • 能跨域名 canonical 吗?: 技术上可以,而且当你转载内容、又想让自己的原版保住排名时,它正是对的工具。其他所有情况用 301 redirect——它信号更强,还能真的把用户带到对的地方。
  • 重复页面应该 canonical 还是 noindex: 两个 URL 都服务真实用户(比如分类页和搜索结果页展示同一组产品)用 canonical;其中一个纯内部用(购物车、admin、那些谁都不该从搜索落进来的筛选页)用 noindex。两者不能互换,而且 Google 明确不建议在同一个站内用 noindex 来挑 canonical。
  • 改了 canonical 多久生效?: Google 得重新抓取两个 URL、重新评估信号,所以预期是几天到几周。用 URL Inspection 确认;别一边等一边反复改标签。

Google 官方文档值得收藏:如何用 rel=“canonical” 指定 canonicalcanonical 排错指南

相关阅读

标签: #独立开发 #SEO #Technical SEO #Canonical