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

一篇讲清楚 canonical 标签——它做什么、什么时候有用、以及四个会悄悄毁掉收录的常见错误。

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

问题背景

<link rel="canonical" href="..."> 标签是为了解决 web 上的 URL 重复乱象——同一页在 www 和裸域名都能访问、带不带结尾斜杠、带 tracking 参数、分页、AMP、不同语言变体。canonical 把这些都指向一个首选 URL。Google 仍然把它当成提示而不是命令,但只要你设对,90% 的情况它会照办。

判断标准

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

快速结论

每个页面都加一个自指 canonical——<link rel="canonical" href="https://yoursite.com/articles/slug/">。真重复的页面(带参数、分页、被转载的),让它们指向主 URL。不要玩跨域名或跨语言 canonical——语言用 hreflang,跨域名用 301

实操步骤

  1. 审查现状。在 5-10 个页面 view source,搜 rel="canonical",确认每页有且只有一个,指向自己的公开 https、不带参数版本。
  2. 挑一个主机:https://yoursite.comhttps://www.yoursite.com。另一个要 301 跳到它。光靠 canonical 不够,必须配 redirect。
  3. 分页列表(/blog/page/2)每页 canonical 指自己,不要全指 page 1。全指 page 1 会让后面的页面被隐藏、影响发现。
  4. 带 tracking 参数的 URL,canonical 要把参数去掉:?utm_source=twitter -> canonical 写 https://yoursite.com/articles/slug/
  5. 多语言站,不要把 zh 页面 canonical 到 en 版本,或反过来。每个语言版本各自自指 canonical,互相用 hreflang 引用。
  6. 部署后,在 Search Console URL Inspection 抽 3-4 个 URL,看「Google-selected canonical」是否和你声明的一致。不一致说明你的提示被覆盖了——先查清楚原因再做别的。

容易踩的坑

  • 把所有页面 canonical 到首页(坏掉的 CMS 插件经典操作)。整站收录直接掉光。
  • 把中文页 canonical 到英文页。Google 会把中文页从中文索引里踢掉,你少一半流量。
  • canonical 指向一个返回 404301 的 URL。Google 会忽略并自己挑一个 canonical,通常挑错。
  • 用了 staging 域名的绝对 URL(staging.yoursite.com),上线时忘改。线上页面 canonical 指向了一个非公开 staging。
  • canonical 和实际 URL 之间 http/https、www/非 www 不一致。必须一字不差完全一样。

这篇适合谁

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。两者不能互换。

相关阅读

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