分页页 canonical 设置混乱:3 种常见错法 + 处理路径

page/2 的 canonical 指向 page/1 还是 self?Google 现在的真实建议。

你的站有 /blog//blog/page/2//blog/page/3/。Search Console 在 page 2+ 标 “Duplicate, Google chose different canonical”。老的 SEO 博客说用 rel="prev"rel="next"、或者把所有分页 canonical 到 /blog/。新的博客说反过来。两边都过时了一半。Google 在 2019 年正式弃用 rel=next/prev,但消息花了好几年才传开。内容站当前最佳实践:每个分页页自指 canonical,当独立 listing 处理。低价值分页视图(搜索结果分页、faceted filter),改用 noindex, follow

本文讲原因和各平台实现。

常见原因

按命中率从高到低。

1. 老教程说 page/2 → page/1 canonical

2019 年前的 SEO 建议是把所有分页 canonical 到 page 1。现代 Google 把这个解读为你在说”这些不是真实页面——给我看 page 1”。page 2-N 的内容在搜索里基本失去能见度。

怎么判断:看 /blog/page/2/<link rel="canonical">。指向 /blog/ 就是按老建议做的。

2. 还在发 rel=next/prev

某些模板还在发这些。无害但没用——Google 忽略。删掉更干净。

怎么判断curl -s yoursite.com/blog/page/2/ | grep -E 'rel="next"|rel="prev"'。有就(可选)删掉,不删也无害。

3. 分页页同时有 noindex 和 self-canonical 冲突

有些模板给分页加 noindex 把它留在 sitemap,造成 Robots meta 与 sitemap 冲突 里描述的同类问题。

怎么判断:view-source 分页页。noindex 存在且也在 sitemap.xml 就要修。

4. 分页用 URL 参数 Google 分不清

/blog?page=2&sort=date&filter=ai——Google 的启发式可能把排列当重复处理(如果没 canonical 指引)。更糟,搜索引擎可能爬所有排列、找到大量低价值页。

怎么判断:分页用 query string 参数(特别是多个)而不是路径分段。

5. 分页内容真的是重复(过滤视图)

你有 /blog/?tag=ai/blog/?tag=ai&page=2 等。每个组合是唯一 URL,但页面本身只是过滤已有列表。这些应该 noindex, follow

怎么判断:分页 URL 只是因为某个过滤组合而存在(不是基于内容库的内在分页),就是过滤视图、不是真正的分页。

6. 无限滚动页没正确的 URL 状态

无限滚动 listing 通过 JS 加载更多项但不更新 URL。Google 没法爬到更深。(不同的问题但相关。)

怎么判断:滚动加载项但 URL 一直停在 /blog/。Google 只看到最初的 10 项。

最短修复路径

第 1 步:按分页类型决定

分页类型处理
主博客索引分页(/blog/page/2/每页 self-canonical,可索引
分类 / 标签分页self-canonical,可索引
搜索结果noindex, follow
Faceted filter 组合noindex, follow 或 robots.txt 拦
无限滚动并行用 SSG 分页 URL

第 2 步:博客 / 分类分页 self-canonical

Astro:

---
const url = new URL(Astro.url.pathname, Astro.site).toString();
---
<link rel="canonical" href={url} />

/blog/page/2/ 的 canonical → /blog/page/2/。完成。

第 3 步:停止发 rel=next/prev

从 layout 删掉:

- <link rel="next" href={`/blog/page/${currentPage + 1}/`} />
- <link rel="prev" href={`/blog/page/${currentPage - 1}/`} />

第 4 步:低价值分页 noindex

搜索结果或过滤组合:

<meta name="robots" content="noindex, follow">

follow 重要——Google 仍要跟内链发现可索引内容。

第 5 步:分页页要可爬

分页链接必须是真实 <a href>,不能只是 JavaScript 按钮。Google 的渲染预算可能不执行 JS 分页。

<a href="/blog/page/2/" rel="next">下一页</a>

第 6 步:sitemap 包含分页 URL

/blog//blog/page/2//blog/page/3/…都作为独立条目。帮 Google 发现深层分页。

非常深的分页(>30 页)考虑同时建可浏览的分类 / 标签 listing,让深文章有更短的发现路径。

第 7 步:修后审 Search Console

Search Console → Pages → 看分页 URL 状态。2-4 周内应从 “Duplicate, Google chose different canonical” 移到 “Indexed”。

预防建议

  • 每个分页页当独立 listing——self-canonical、可索引。
  • 不再发 rel=next/prev——Google 已弃用。
  • 过滤 / 搜索结果分页用 noindex, follow(不要完全拦——Google 仍需要发现内容)。
  • 分页用真实 <a> 链接,不要只用 JS。
  • 加新 listing 类型时审计分页行为。

相关阅读

标签: #SEO #排查