Search Console 的 Pages 报告里「Crawled — currently not indexed」显示 3400 条。往下滚全是噪音:?sort=asc、?sort=desc、?page=12、?page=13、?tag=python&category=tutorials、/2024/03/、/author/jane/、/wp-content/uploads/...。真文章 index 变慢了,因为 Googlebot 一直在重复抓这些参数组合。
**最快修法:**导出报告,按 URL 模式分组,从最大的那一类在源头屏蔽。对 sort / filter / facet 参数和站内搜索结果页,用 robots.txt 的 Disallow(在花掉 crawl budget 之前就把抓取拦住)。对那些你还想让 Google「爬穿过去」的薄归档页和分页,用 noindex——但同一个 URL 千万不要两个都加(下面细说)。
开工前先做个现实判断:**crawl budget 只对大站或更新很频繁的站才是真约束。**按 Google 官方说法,URL 数在约 10000 以内的站点基本都能被高效抓取,不用操心 crawl budget。它真正成为问题,是当你有一个中等偏大、每天都在变的站(10000+ URL),或者超大站(1000000+ URL)。如果你的站很小、文章最终都能正常 index,那么垃圾 URL 上的「Crawled — not indexed」只是观感问题,不紧急。为了整洁可以收拾,但别慌。
话虽如此,在任何站上,可爬但无价值的 URL 都会干两件坏事:浪费 crawl budget(在大站上拖慢真文章 index),以及给 Google「站点零散无结构」的信号。下面讲:怎么按源分类噪音、用对的工具按源屏蔽、并确认修好了。
常见原因
按命中率从高到低。
1. URL 参数暴露每一种 sort / filter 组合
?sort=asc、?sort=desc&filter=x、?sort=desc&filter=x&page=2——每个组合都是一个独立 URL。一个有 3 个 filter、2 种 sort、10 页的列表 = 一页生 60 个 URL 组合。
**如何判断:**报告里很多带 ? query 的 URL。按参数名分组,元凶就是那些高 multiplicity 的参数(sort、filter、order、view)。
注意:Search Console 里以前专门处理这个的 URL Parameters 工具已经在 2022 年 4 月 26 日下线了。你再也不能在 GSC 里告诉 Google「忽略某个参数」——控制权现在完全在 robots.txt、canonical 标签和 noindex 上。
2. Page 5-10 之后的分页没实质内容
/category/ai/page/12/ 显示文章 121-130——没人会直接搜的内容。Google 爬但不 index,因为页面本身太薄。
**如何判断:**报告里有很多 N 大于 5 的 /page/N/ URL。深分页通常占噪音相当一块。
3. faceted navigation 制造 URL 组合爆炸
/products/?color=blue&size=large&brand=acme 这种 URL。每个 facet 组合一个 URL。10 种颜色、5 种尺寸、20 个品牌 = 一页生 1000 个 URL 组合。Google 明确点过名:抓取 facet URL「往往会消耗站点大量计算资源」,还会拖慢新内容的发现。
**如何判断:**带多个堆叠参数的 URL,尤其是电商 facet。组合 = 少数真实意图产出大量不同 URL。
4. 自动生成的归档页(年 / 月 / 作者)公开可爬
/2024/、/2024/03/、/2024/03/15/、/author/jane/——你的 CMS 自动生成的。每个都是独立 URL,但多数 Google 没什么可排的。
如何判断:/YYYY/、/YYYY/MM/、/author/、/tag/ 这类模式。日期和作者归档通常都薄。
5. 站内搜索结果被误索引
/search?q=ai+tools——站内搜索结果页被爬了。现在 Google 手里有了别人搜过的每一个页面。多年来 Google 一直把可索引的站内搜索结果列为典型的 crawl budget 陷阱。
**如何判断:**URL 以 /search?、/?s= 或 /?q= 开头。站内搜索结果永远不该可索引。
6. WordPress / CMS 附件页
/wp-content/uploads/image.png 或 ?attachment_id=42——某些 CMS 自动生成的图片附件页。没真内容,图本身在另一个 URL 上。
**如何判断:**URL 含 /wp-content/、attachment_id= 或类似的 CMS 附件模式。
先选对工具
动手前先把一条规则搞清楚,因为把这几个搞混是这个问题上最常见的错误:
| 工具 | 作用 | crawl budget | 用在哪 |
|---|---|---|---|
robots.txt 的 Disallow | 完全拦住抓取——Googlebot 永远不会 fetch 这个 URL | 省下(不 fetch) | 你永远不想抓的参数、facet、站内搜索、附件 |
rel="canonical" | 请求 Google 把信号合并到一个 URL;变体仍会被抓 | 花掉(仍要 fetch) | 你确实想 index 的页面的 sort/view 排列 |
noindex(meta 或 X-Robots-Tag) | 让页面不进索引;Google 必须先抓到才能读到这个标签 | 花掉(必须 fetch) | 你想排除、但还想让它被爬穿过去的薄页(部分归档) |
陷阱:如果你在 robots.txt 里 Disallow 了某个 URL,Googlebot 就 fetch 不到它,于是它永远看不到那个页面上的 noindex 标签或 rel="canonical"。对同一个 URL 又屏蔽又加标签,两者会互相抵消——而且如果别的页面链到它,一个被屏蔽的 URL 仍可能出现在搜索结果里(只是没有摘要)。所以:**要么在 robots.txt 里屏蔽它,要么给它加 noindex/canonical——同一个 URL 绝不两者都用。**Google 自己的 faceted-navigation 文档和更广的 SEO 共识在这点上都很明确。完整区别见 noindex vs robots.txt。
最短修复路径
按收益从高到低。Step 1 分类,Step 2-6 按源修。
Step 1:导出 + 按源分类
Search Console → Pages → 「Crawled — currently not indexed」→ Export
按模式给 URL 分组。在表格里对 ? 后面那段(或路径前缀)做个数据透视,几分钟就能搞定:
| 类别 | 例子模式 | 数量 |
|---|---|---|
| 参数 sort/filter | ?sort=*、?filter=* | 1200 |
| Page 5 之后的分页 | /page/N 其中 N > 5 | 600 |
| Facet | ?color=*&size=*&brand=* | 800 |
| 归档页 | /YYYY/、/author/* | 300 |
| 站内搜索 | /search?q=* | 200 |
| 附件 | /wp-content/uploads/* | 300 |
最大的几类先修。
Step 2:sort / filter 参数——用 robots.txt(或 canonical,二选一)
如果你从来不想让它们被爬(多数情况),在 robots.txt 里屏蔽:
User-agent: *
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*sort=
Disallow: /*filter=
/*?sort= 这种写法匹配参数排在查询串开头的情况;/*sort= 则匹配它出现在任意位置(比如 ?page=2&sort=asc)。在依赖这些规则前,先到 Search Console 的 Settings → robots.txt 报告里测一下你的模式。
如果你反而是想让这些页面的干净版本被 index、变体只是被合并,那就别屏蔽——让 Google 去爬,并给干净 URL 加一个自指 canonical:
<link rel="canonical" href="https://yoursite.com/category/ai/" />
这样 ?sort=asc、?sort=desc&filter=x 都合并到 canonical。Google 文档指出 canonical「可能随时间降低」变体的抓取量——它比 robots.txt 屏蔽更慢更软,所以只用在你确实想让其被爬的 URL 上。
Step 3:facet——默认屏蔽、精选出赢家
这是标准的电商模式。按 Google 官方 faceted-navigation 指引:屏蔽 facet 参数,留一个 canonical 的「view all」例外。
User-agent: Googlebot
Disallow: /*?*color=
Disallow: /*?*size=
Disallow: /*?*brand=
Allow: /*?products=all$
然后只把高 intent 的组合提升为真实、可索引的落地页,带自己的 H1、正文和自指 canonical:
默认: 每个 facet 组合 = robots.txt 屏蔽(不抓)
精选: /products/blue-running-shoes/(真页面、有正文内容)= 可索引
记录了这套做法的案例(屏蔽垃圾 facet、给干净页加自指 canonical、为少数高需求组合做真实页面)普遍报告:浪费的抓取明显下降、长尾流量在大约一到两个月内有所提升——这是方向性结果,不是任何站都能拿到的确定数字。
Step 4:深分页——保持可爬,别一刀切 noindex
老办法说「page 3 及以后 noindex」。要小心:Google 说过一个页面长期保持 noindex,最终也会被当成 nofollow,于是一个 noindex 的分页就可能不再把抓取信号传给它链出的文章。截至 2026 年 6 月,更稳的做法是:
- 让分页保持可索引,并加自指 canonical(每个
/page/N/都 canonical 到自己,不是到第 1 页)。 - 确保每篇文章也能从 sitemap 或分类索引页到达,这样没有任何一篇文章依赖某个分页被爬到。
- 只有在你有确定的备用抓取路径时,才考虑对非常深的页面加
noindex——并且把它当临时手段。
对短分类,最干净的办法是用一个「view all」页彻底去掉分页。注意 Google 已不再用 rel="next" / rel="prev" 做索引(这个信号被废弃了),不过 Bing 仍然认这个标记,所以保留它没坏处。完整拆解见 分页 noindex/follow 陷阱。
Step 5:归档页——薄就 noindex,但保持可爬
<!-- /2024/、/author/jane/、/tag/python/ -->
<meta name="robots" content="noindex, follow" />
这里用 noindex(而不是 robots.txt 屏蔽),因为你通常还想让 Google 爬穿这些页面、到达它们列出的文章。如果你的归档页有真实编辑内容(写过的导语、人工精选),那就保持可索引;如果只是自动生成的列表,就 noindex。tag 页这个具体问题见 tag 页该不该 noindex 和 分类页该不该 index。
Step 6:站内搜索 + 附件——完全屏蔽
这些根本不该被爬,所以 robots.txt 才是对的工具:
# robots.txt
User-agent: *
Disallow: /search
Disallow: /*?s=
Disallow: /*?q=
Disallow: /wp-content/uploads/
Disallow: /*?attachment_id=
在 WordPress 上,再关掉附件页(Yoast SEO → Settings → 「Media pages」→ 重定向到文件本身),并确认线上站点的「Discourage search engines」是关的(Settings → Reading)——那个 toggle 屏蔽的是你整个站,不只是搜索结果。WordPress 的具体步骤见 站内搜索页索引。
怎么确认修好了
报告不会一夜清零;Google 按自己的节奏重爬。按这个顺序验证:
- **今天就测规则。**在 Search Console → Settings → robots.txt 报告里粘一个被屏蔽的样例 URL,确认它显示为 Disallowed。对
noindex,把 URL 跑一遍 URL Inspection 工具——出现「Indexing allowed? No: ‘noindex’ detected」就说明 Google 能读到这个标签(也就意味着你没有同时在robots.txt里屏蔽它)。 - **2 到 6 周里盯着数字。**打开 Search Console → Pages → 「Crawled — currently not indexed」追总数。被屏蔽的 URL 会从「Crawled — not indexed」里掉出去,转到「Blocked by robots.txt」/「Excluded by ‘noindex’ tag」——这种迁移就是生效的信号。
- **不只看清理,更要看收益。**真正的赢面是新文章 index 变快。在 Search Console → Pages 里盯「Indexed」数量和最新几篇文章的 index 时间;新内容展示量上涨,就是 crawl budget 被收回来的代理指标。
别用「Remove URLs」来干这事——那个工具只是把 URL 从结果里藏约 6 个月,既不会停止抓取,也不解决底层的 budget 浪费。
预防建议
- 规划 URL 结构,尽量减少参数 / facet 组合。干净路径胜过参数爆炸。
- 新参数模式在
robots.txt里默认屏蔽;只把少数值得 index 的提升为真实页面。 - 让站内搜索、附件、admin/preview URL 在模板层就
Disallow,而不是事后再清理。 - 每季度重新导出「Crawled — currently not indexed」,找你 CMS 新冒出来的噪音类别。
- 电商 / facet 站,把每个可索引 URL 当成编辑决定,而不是自动行为。
- 记住一条规则:屏蔽或加标签,二选一——一个被
Disallow的 URL 会把自己的noindex和 canonical 一起藏掉。
常见问题
该用 robots.txt 还是 noindex 来清掉这些 URL?
当你永远不想让某个 URL 被爬时(sort/filter 参数、facet、站内搜索、附件),用 robots.txt 的 Disallow——它省 crawl budget,因为 Google 根本不去 fetch 这个页面。当你想让页面不进索引、但还想让它被爬穿过去、传递它内含的链接时,用 noindex(薄归档)。同一个 URL 绝不两者都用:一个被屏蔽的 URL 抓不到,Google 就永远看不到那个 noindex。
在 robots.txt 里屏蔽这些 URL,会把已经在 Google 里的页面 deindex 吗?
不会立刻,也不可靠。一旦 URL 被屏蔽,Google 就没法重爬去看到 noindex,所以一个已被 index 的页面如果还有别的站链着它,可能仍会留在结果里(只是没摘要)。要移除一个已经被 index 的页面,先让它保持可爬并加 noindex;等它从索引里掉出去之后,再在 robots.txt 里屏蔽。
「Crawled — currently not indexed」多久会降下来? 通常 2 到 6 周。Google 按自己的节奏重爬,报告更新有滞后。你可以当天就用 robots.txt 报告和 URL Inspection 加速验证,但总数掉得慢。别反复点「Validate fix」指望立刻见效。
crawl budget 对我这种小站到底有没有关系? 大概率没有。Google 说约 10000 URL 以内的站点都能被高效抓取、不需要特别关注。crawl budget 真正成为约束,是在 10000+ URL 且每天都在变的站,或 1000000+ URL 的站。如果你的文章在一两周内都能正常 index,就把低价值 URL 当成整洁度清理,而不是急事。
Search Console 里的 URL Parameters 工具去哪了?
Google 在 2022 年 4 月 26 日把它下线了,原因是发现只有约 1% 的参数配置真正有用。现在 GSC 里没有参数控制了——改用 robots.txt、canonical 标签和 noindex 来处理参数。
noindex, follow 用在分页上还安全吗?
短期安全——但 Google 说过长期保持 noindex 的页面最终会被当成 nofollow,于是链接就不再传信号了。截至 2026 年 6 月,更推荐的是让分页保持可索引、加自指 canonical,并保证每篇文章也能从 sitemap 或索引页到达,而不是一刀切给深分页加 noindex。