"Alternate page with proper canonical tag" 不是错误

Search Console 把一堆 URL 标成 alternate page,这是信息提示不是错误。本文教你如何确认它确实正常,以及揪出唯一真正需要修的那种情况。

一句话结论: “Alternate page with proper canonical tag” 是信息提示,不是错误。Google 发现了某个页面的非首选版本,读到了你的 <link rel="canonical">,于是按你的指示去收录 canonical 而不是这条变体。Google 官方文档原话就是:“There is nothing you need to do.”(你什么都不用做。)最快的正确做法:抽查其中 5-10 个 URL,确认”用户声明的规范网址”和”Google 选择的规范网址”一致,把这条状态标为”已知正常”,然后别再盯着它。只有当一个你真心想被独立收录的页面被困在这个分类里时,才需要动手。

打开 Search Console 的 Page indexing(网页编入索引) 报告,看到一堆 URL 落在 “Alternate page with proper canonical tag(含适当规范标记的备用网页)” 下面时,多数人第一反应是 Google 拒收录了。并不是。Google 知道这是某个 canonical 页面的非首选版本,读懂了你设置的 <link rel="canonical">,于是主动选择不收录这一个,转而收录你指定的那个。这是 Google 在配合你,不是拒绝你。

真正要警惕的是隔壁那条:“Duplicate, Google chose different canonical than user” —— 那才是 Google 没听你的、自己另选了 canonical。两者别混:它们在不同的分类里,需要的处理方式也相反。

先判断你属于哪一类

打开报告看 URL。截至 2026 年 6 月,下面这四种模式覆盖了几乎所有条目:

URL 里的特征可能原因该不该动
?utm_?ref=?fbclid=追踪参数变体不用(canonical 正常工作)
?page=2?sort=?color=分页 / 筛选变体不用,除非该页应被独立收录
/en//zh//ja/ 语言段hreflang 备用页不用(设计上互相引用)
m.amp. 子域名移动版 / AMP 备用页不用
一个你想独立收录的干净 URLcanonical 写反了要修(见 Step 2)

前四种都正常,只有最后一行才是真问题。

常见原因

1. 你确实声明了多个 URL 指向同一个 canonical

最常见的情况:你有 /article-a?utm=twitter/article-a?ref=newsletter/article-a/ 这几个变体,它们的 head 里都写了 <link rel="canonical" href="https://yourdomain.com/article-a/">。Google 看完每一个都回报”知道了,不收录这个变体,去收录主版本”——于是每个变体都进了 alternate 分类。

如何确认: 点开报告里任意一个 alternate URL 进入”网址检查”工具,在 Page indexing 下读 Search Console 给出的两个字段:User-declared canonical(用户声明的规范网址)Google-selected canonical(Google 选择的规范网址)。两者一致 → 一切正常。

2. 分页 / 参数变体

/blog/?page=2/blog/?page=3 都指向 /blog/,或者 /products?color=red 指向 /products。Google 不会重复收录,但会把这些变体列在这里。

如何确认: URL 里含 ?page=?sort=?utm_?ref= 这类查询参数。

3. hreflang 多语言备用页

如果你做了 <link rel="alternate" hreflang="zh-CN" href="...">,每个语言版本会互相引用。Google 收录匹配搜索者所在地区的那个版本,并把不匹配的版本按设计列进这份报告。Google 的建议是:每条 hreflang 都应指向同语言的 canonical 页面(或最接近的替代语言),所以千万别让 /zh/page 的 canonical 指向 /en/page

如何确认: URL 路径里含 /en//zh//ja/ 等语言段。

4. 移动版 / AMP / PWA 子域名

m.yourdomain.com/articleamp.yourdomain.com/article 指向主站 canonical:主站收录、移动版 / AMP 版进 alternate。(Google 至今仍把这种情况列为该状态的正常原因之一。)

最短修复路径

99% 的情况是:不用修,标记”已知正常”即可。 但要先用下面几步验证它确实”正常”。

Step 1:抽样验证 canonical 一致性

在报告里随机点 5-10 个 alternate URL,对每一个:

  1. 点 URL 进入”网址检查(URL Inspection)“工具。
  2. 看这两个字段:
    • User-declared canonical:<link rel="canonical"> 里写的。
    • Google-selected canonical: Google 实际拿来当主版本的。
  3. 一致 → 标记”OK”。
  4. 不一致 → 这条不属于 alternate,而属于 “Duplicate, Google chose different canonical than user”,应该到那一类报告里处理(见相关阅读)。

也可以在终端里 curl 批量自查:

for u in url1 url2 url3; do
  echo "=== $u ==="
  curl -sL "$u" | grep -oE '<link rel="canonical" href="[^"]+"'
done

如果某个变体没返回 canonical 行,或者返回的 canonical 指向了意料之外的地方,那它就是需要修的那个。

Step 2:把”真该被收录的”alternate 挑出来

不是每条都无害。如果你发现某个你希望被独立收录的 URL 被错放进了 alternate,那是你的 canonical 写反了。例子:

  • /blog/2026/comparison 想独立收录,但 head 里 canonical 指向 /blog/comparison
  • 多语言下 /zh/page 的 canonical 错指向了 /en/page

修复办法是把页面改成 self-canonical(指向自己):

<!-- 改前(错) -->
<link rel="canonical" href="https://yourdomain.com/blog/comparison" />

<!-- 改后(self-canonical) -->
<link rel="canonical" href="https://yourdomain.com/blog/2026/comparison" />

部署后,把修正过的 URL 放进”网址检查”,点 Request indexing(请求编入索引),大约 14 天后再回来看。

Step 3:减少 alternate 噪声(可选)

报告里 URL 多到看不过来时可以瘦身——但要挑那种不会让 Google 看不到 canonical 的办法。

  • UTM / tracking 参数: 让每个变体的 <link rel="canonical"> 继续指向干净 URL。这是 Google 推荐的 canonical 方法,能把链接权重汇聚到干净页面。不要去用 robots.txt 里的 Disallow: /*?utm_*——Google 明确警告 “Don’t use the robots.txt file for canonicalization purposes.”,因为被屏蔽的 URL 仍可能被收录,而 Google 从此再也读不到它的 canonical。
  • 分页: 如果分页页本身没有独立价值,加 <meta name="robots" content="noindex, follow"> 让它移出报告。前提是允许它被抓取——被 robots.txt 屏蔽的页面根本不会被抓,Googlebot 也就永远看不到这个 noindex
  • 筛选 / 排序 URL: 最好在 server 端 301 到无参版本。301 是 Google 认可的最强 canonicalization 信号(强于 rel="canonical",而 rel="canonical" 又强于 sitemap 条目),多个信号叠加时效果更好。

补充:Search Console 里那个旧的 URL Parameters(网址参数)工具已于 2022 年 4 月下线,不会回归。参数处理现在完全靠你的 canonical 标签、301 重定向,以及(必要时的)noindex

还有一点:不要用 robots.txt 屏蔽真正的 canonical 页——那会让 Google 读不到 canonical 声明,反而出更乱的报告。

Step 4:监控时区分”信息”和”阻塞”

在你定期看的 Search Console 看板里,把状态分成两类:

类别状态名是否要动
信息Alternate page with proper canonical tag
信息Page with redirect
阻塞Duplicate, Google chose different canonical than user
阻塞Crawled - currently not indexed
阻塞Discovered - currently not indexed
阻塞Excluded by ‘noindex’ tag视情况

把”信息”类放进折叠区,不要每周都重新评估一遍。

如何确认已经修好

健康的 alternate 状态本来就不用”修”,但在你纠正了一个写反的 canonical(Step 2)之后,应该验证页面是否真的迁移了:

  1. 把修正后的 URL 跑一遍”网址检查”,确认 User-declared canonicalGoogle-selected canonical 现在都等于这个 URL 本身。
  2. 等下次重新抓取(可用 Request indexing 催一下),约 14 天后重新打开 Page indexing 报告。这个 URL 应该出现在 Indexed(已编入索引) 而不是 Alternate page with proper canonical tag 下。
  3. 对于那些你确认一直正常的 URL,不会有任何变化——这正是它们该有的样子。

容易误判的情况

  • 当成错误: 这里的报告没有”Error”字样,这些 URL 也不计入你的收录问题,它就是个正常分类。
  • 想清零: 一个健康成长中的站点,这条数字会一直涨(hreflang、参数变体、分页),目标从来不是清零。
  • 跟 “Page with redirect” 混淆: 301/302 跳走的页面归在 “Page with redirect”,不在这里。
  • 以为可以直接删 canonical: 删掉 <link rel="canonical"> 反而会让 Google 自己挑,结果更糟,还可能把页面推进 “Duplicate” 分类。

预防建议

  • canonical 默认走 self-canonical:每个 URL 指自己,只在确实是变体(参数、分页)时才指主版本。
  • 监控看板区分”信息”和”阻塞”两类,这条状态归”信息”。
  • UTM / tracking 噪声用 canonical 标签处理(筛选 / 排序 URL 用 301),不要用 robots.txt 屏蔽。
  • hreflang 和 canonical 用同一个统一脚本生成,杜绝手写漏配、写反。

常见问题

“Alternate page with proper canonical tag” 会伤害我的 SEO 吗? 不会。它恰恰说明 Google 读到了你的 canonical,并把信号汇聚到你选定的页面上。被选中的 canonical 照常参与排名,只是这条变体不会作为独立页面被单独收录。

为什么这个数字一直在涨? 每多一个追踪链接、分页、筛选组合、hreflang 语言版本,就多一条。成长中的站点这个数字会无限上升。要盯的是趋势有没有突然飙升,而不是绝对值。

我能让 Google 同时收录 alternate 和 canonical 吗? 只要两者声明的是同一个 canonical 就不行。如果你真的想让某个页面被独立收录,把它改成 self-canonical(Step 2)。如果它确实是重复内容,就让它保持合并状态——同时收录两个只会分散排名信号。

要给这些页面加 noindex 吗? 通常不用。noindex 是给你完全不想进索引的页面用的。对于 canonical 变体,canonical 标签已经做了正确的事,还能保留链接权重。noindex 留给那些你宁愿彻底移除的低价值分页或筛选 URL——而且绝不要和 robots.txt 的 Disallow 一起用,否则 Googlebot 抓不到页面,也就看不到那个标签。

报告里有个 URL 根本没声明 canonical,怎么办? 给它加上 <link rel="canonical">。没有 canonical,Google 就自己猜,一旦猜错就会把这个 URL 推进 “Duplicate, Google chose different canonical than user”——那正是你不想看到的状态。

相关阅读

标签: #SEO #Google #Search Console #收录