一句话结论: “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 备用页 | 不用 |
| 一个你想独立收录的干净 URL | canonical 写反了 | 要修(见 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/article 或 amp.yourdomain.com/article 指向主站 canonical:主站收录、移动版 / AMP 版进 alternate。(Google 至今仍把这种情况列为该状态的正常原因之一。)
最短修复路径
99% 的情况是:不用修,标记”已知正常”即可。 但要先用下面几步验证它确实”正常”。
Step 1:抽样验证 canonical 一致性
在报告里随机点 5-10 个 alternate URL,对每一个:
- 点 URL 进入”网址检查(URL Inspection)“工具。
- 看这两个字段:
- User-declared canonical: 你
<link rel="canonical">里写的。 - Google-selected canonical: Google 实际拿来当主版本的。
- User-declared canonical: 你
- 一致 → 标记”OK”。
- 不一致 → 这条不属于 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)之后,应该验证页面是否真的迁移了:
- 把修正后的 URL 跑一遍”网址检查”,确认 User-declared canonical 和 Google-selected canonical 现在都等于这个 URL 本身。
- 等下次重新抓取(可用 Request indexing 催一下),约 14 天后重新打开 Page indexing 报告。这个 URL 应该出现在 Indexed(已编入索引) 而不是 Alternate page with proper canonical tag 下。
- 对于那些你确认一直正常的 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”——那正是你不想看到的状态。
相关阅读
- canonical 写错会怎样
- Duplicate, Google chose different canonical
- hreflang 警告快速指南
- Googlebot 抓取上升但曝光不动
- 无限滚动页内容未被收录:3 个原因 + 修复路径
- “Page not mobile friendly” 怎么修
- 页面被取消收录——是算法还是 manual action?
- Google 只爬首页,从不爬文章页
- 为什么反复 resubmit URL 也不能让 Google 收录
- Search Console Pages 报告无故下降
- sitemap 里有但 Search Console 不显示
- Search Console 报结构化数据警告
- “URL is unknown to Google” 是什么意思