在任意已收录页面跑 URL Inspection,会看到两个 canonical 字段:User-declared canonical(你设的)和 Google-selected canonical(Google 选的)。一致最好;不一致说明 Google 推翻了你——而这种不一致里包含很有用的信息。
问题背景
canonical 标签是提示,不是指令。Google 会把你声明的 canonical 和很多信号(内链、sitemap、内容相似度、重定向)一起评估,挑它认为应该代表这个页面的 URL。多数时候 Google 和你一致。不一致时,正确的做法是搞清楚为什么信号分裂、让它们一致——而不是想用更强的标签去对抗 Google。
判断标准
- URL Inspection 显示某 URL 的 User-declared 和 Google-selected canonical 不一样。
- Search Console Pages 报告里有 URL 落在「Duplicate, Google chose different canonical than user」。
- 你想被收录的 URL 一直没出现在搜索结果里,但同一页的另一个版本出现了。
- 同一个页面有多种 URL 格式(结尾斜杠 / 无斜杠、
?utm_*、/index.html)而 Google 收录了你不想要的那版。
快速结论
Google 推翻你的 canonical = 你的信号不一致。找出指向 Google 选的那个 URL 的因素(内链、sitemap、外链、重定向),然后要么 (a) 接受 Google 的选择、把 canonical 改成它,要么 (b) 把所有信号重新统一到你偏好的 URL。两种都行;不动手就一直卡着。
实操步骤
- 对受影响的 URL 跑 URL Inspection。看两个 canonical 字段。一致就没事。
- 不一致的话,点 View crawled page 看已收录 HTML 里
<link rel="canonical">实际写什么。对比线上版本。不一致说明 Google 上次爬是在你修复之前——申请收录、等。 - 两个版本都和你设的一样、但 Google 还是选了别的 URL,说明信号冲突。审:(a) 那个 URL 在 sitemap 里吗?(b) 内链更指向它吗?(c) 有 301 跳到它吗?(d) 是不是在另一个主机上(
wwwvs 裸域)? - 决定哪个 URL 是你想要的 canonical——通常是最干净、被指向最多、被分享最多的那版。
- 让所有信号一致:canonical 标签、sitemap、内链、重定向都指向同一个 URL。如果
www和裸域都在跑内容,把一个 301 到另一个。如果?utm_*在制造重复,确保 canonical 不带参数。 - 清理完后对 canonical URL 申请收录。1-3 周内 Google 应该会合并,「Google-selected canonical」会切回你设的。
容易踩的坑
- 把 canonical 当指令。它是强提示,但其他信号冲突时 Google 会无视。
- canonical 指向另一个本身有不同 canonical 的 URL。整条链会被忽略。
- 没拥有对方域名就用跨域 canonical。多半被忽略,还显得可疑。
- 忘了 hreflang 的每个 alternate 都需要自己的 canonical 自指(或指向语言对)。hreflang + canonical 不匹配是「Google chose different canonical」的常见根源。
- 把「Alternate page with proper canonical tag」当 bug。这个状态恰恰说明一切正常——Google 看到了 alternate、尊重了你的 canonical、把 alternate 排除在索引外。符合预期。
这篇适合谁
多版本内容的站点(分页归档、参数 URL、AMP、语言对、www vs 裸域)。
这篇不适合谁
单语言、单模板、一页一 URL 的小站。canonical 冲突很少;如果遇到了,先怀疑发布 bug。
FAQ
- 我把无斜杠版设成 canonical,为什么 Google 选了带斜杠的?: 多半因为 sitemap、内链、或重定向更偏向带斜杠的版本。把所有信号对齐;canonical 单兵作战赢不了「其他全错」。
- 直接不写 canonical 让 Google 自己判断行不行?: 可以,但你失去了唯一的明确投票。自指 canonical 是安全默认;除非你真的没偏好,不然别省。
- 「Alternate page with proper canonical tag」这个状态是不是坏?: 不是,这是 alternate URL 的成功状态。Google 看到了 alternate、看到它 canonical 到了主版、把 alternate 排除在索引外。完全符合预期。
- 所有信号对齐后 Google 多久会重新评估?: 单个 URL 1-4 周。重新爬之后 Google-selected canonical 字段会切换。用 URL Inspection 跟踪。