使用指南发布日期 阅读时间约 8 分钟

robots.txt 与 noindex 的区别:从搜索结果中删除网页的正确方法

“已经用 robots.txt 屏蔽了,搜索结果里还是有”“Search Console 提示‘已编入索引,尽管遭到 robots.txt 屏蔽’”。这类问题大多源于没分清 robots.txt 和 noindex 的作用。本文说明抓取和编入索引的区别、想从搜索结果中删除网页时的正确步骤、robots.txt 里的 Noindex 和 Crawl-delay 为什么无效,以及 Search Console 常见提示和常见写法错误的改法。

robots.txt 阻止抓取,noindex 阻止编入索引

搜索引擎把网页显示到搜索结果之前,要经过两个阶段:去获取网页的“抓取”,以及把内容登记到搜索数据库的“编入索引”。robots.txt 阻止的是前者,noindex 阻止的是后者。

robots.txt 的 Disallownoindex(meta 标签、X-Robots-Tag)
阻止什么抓取(获取网页)编入索引(在搜索结果中显示)
写在哪里网站的 /robots.txt各网页 HTML 的 head,或 HTTP 响应头
会出现在搜索结果中吗如果被其他网页链接,可能只显示网址被抓取之后就不再显示
适合的用途减少站内搜索结果、带参数网址等无用抓取把会员页、感谢页、重复页从搜索结果中排除
PDF 和图片可以按路径屏蔽用 X-Robots-Tag 响应头指定

即使网页被 robots.txt 屏蔽,只要有其他网页链接到它,Google 就知道“有这么一个网址”。因此它可能在没读取内容的情况下,以没有说明文字的状态出现在搜索结果中。这就是“屏蔽了却还能搜到”的原因。

想从搜索结果中删除时的正确步骤

  1. 1

    解除 robots.txt 的屏蔽

    Google 要先抓取网页,才能读到 noindex。如果一直用 robots.txt 屏蔽,noindex 永远读不到,网页就会一直留在搜索结果中。先用测试工具确认该网页对 Googlebot 是“允许”。

  2. 2

    在网页中加入 noindex

    在 HTML 的 head 中加入 <meta name="robots" content="noindex">。PDF、图片等非 HTML 文件,则在服务器设置中返回 X-Robots-Tag: noindex 响应头。

  3. 3

    等待或请求重新抓取

    在 Search Console 的网址检查工具中请求编入索引,网页会更快被读取。网页数量多时,暂时把它们留在站点地图中,会更容易被抓取。

  4. 4

    确认消失后,如有需要再用 robots.txt 屏蔽

    从搜索结果中消失后,如果还想减轻抓取负担,可以用 robots.txt 屏蔽。但屏蔽后 noindex 就读不到了,一旦被其他网站链接,可能又会只显示网址。一般建议只用 noindex。

Search Console 常见提示及处理方法

提示含义处理方法
已编入索引,尽管遭到 robots.txt 屏蔽抓取被阻止,但网址通过链接等被编入了索引不想被搜到就解除屏蔽并加 noindex;想被搜到就解除屏蔽
被 robots.txt 屏蔽抓取被阻止,也没有编入索引符合预期就不用处理;想被搜到的网页,删掉对应的 Disallow
提交的网址已被 robots.txt 屏蔽站点地图中列出的网址被 robots.txt 屏蔽了从站点地图中移除,或解除屏蔽
已被“noindex”标记排除读到了 noindex,网页已从搜索结果中排除符合预期就不用处理

Search Console 不会显示是哪一行 Disallow 造成的。把该网址输入测试工具,用 Googlebot 判定,就能看到起决定作用的规则的行号。修改后到生效的过程,请参阅robots.txt 的检查方法。

robots.txt 里的 Noindex、Crawl-delay 对 Google 无效

  • Noindex:以前 Google 会非正式地读取 robots.txt 中的“Noindex: /old/”,但已于 2019 年 9 月 1 日停止支持,现在写了也会被忽略。请使用网页的 meta 标签或 X-Robots-Tag。
  • Crawl-delay:Google 不读取。Googlebot 会根据服务器的响应速度和错误情况,自动调整抓取频率。Bing 和 Yandex 会读取 Crawl-delay。
  • Host、Clean-param:只有 Yandex 使用,Google 和 Bing 不读取。
  • Sitemap:Google 会读取。但只写路径,如“Sitemap: /sitemap.xml”,不会被读取,必须写成以 https:// 开头的完整网址。

如果 Googlebot 抓取过多导致服务器变慢,暂时返回 503 或 429 状态码,Google 就会减少抓取。不过持续太久,网页会逐渐被移出抓取范围,一般应在几天内恢复。

常见的写法错误及改法

错误写法结果正确写法
User-agent:*(全角冒号)该行不会被读取User-agent: *
Disallow: https://example.com/secret/这里要写路径而不是网址,所以不匹配Disallow: /secret/
Disallow: private/不以 / 开头,所以什么都不匹配Disallow: /private/
开头就写 Disallow: /admin/(在 User-agent 之前)不会用于任何爬虫在上面写 User-agent: *
User-agent: Googlebot-Images名称不存在,所以不会被使用User-agent: Googlebot-Image
Noindex: /old/Google 会忽略在网页的 meta robots 中写 noindex
Sitemap: /sitemap.xml不会被读取Sitemap: https://example.com/sitemap.xml

测试工具的示例“容易写错的写法”里集中放了这些错误。载入后查看“写法检查”,就能确认每一行是怎样被读取的。通配符的写法请参阅Allow 与 Disallow 的优先顺序及 *、$ 的含义,AI 爬虫的屏蔽方法请参阅用 robots.txt 屏蔽 AI 爬虫。

常见问题

用 robots.txt 屏蔽后,会从搜索结果中消失吗?
不一定。robots.txt 只阻止抓取,被其他网页链接的网址可能会以没有说明文字的状态出现在搜索结果中。想删除时,请解除屏蔽并在网页中加入 noindex。
robots.txt 和 noindex 可以一起用吗?
对同一个网页两者都用,Google 会因为 robots.txt 而读不到 noindex,noindex 就失效了。想从搜索结果中排除的网页,不要用 robots.txt 屏蔽,只用 noindex。
在 robots.txt 中写 Noindex 会怎样?
什么都不会发生,因为 Google 已于 2019 年 9 月 1 日停止支持。请使用网页的 meta 标签(<meta name="robots" content="noindex">)或 X-Robots-Tag 响应头。
“已编入索引,尽管遭到 robots.txt 屏蔽”需要处理吗?
想让该网页出现在搜索结果中,就解除 robots.txt 的屏蔽;不想让它出现,就解除屏蔽并加入 noindex。两样都不做的话,它可能会一直以没有说明文字的状态出现在搜索结果中。

本文介绍的工具

相关文章

使用指南约 8 分钟

robots.txt 的检查方法:测试工具下线后检查屏蔽情况的步骤

Google Search Console 里的 robots.txt 测试工具已于 2023 年 12 月停止提供,现在换成了“robots.txt 报告”。报告无法“输入网址测试是否被屏蔽”,因此很多人不知道该去哪里检查。本文整理 robots.txt 的存放位置和打开方法、Search Console 报告和网址检查工具能看出与看不出的内容、用测试工具逐个网址确认判定的步骤,以及修改后到生效的过程。

阅读文章 →
使用指南约 7 分钟

robots.txt 中 User-agent 的写法:同时写 * 和 Googlebot 会怎样

如果 robots.txt 里同时有“User-agent: *”组和“User-agent: Googlebot”组,Googlebot 就不再使用“*”下的规则。很多人不知道这一点,加了 Googlebot 专用的组之后,原本屏蔽的网页反而被抓取了。本文说明爬虫如何决定使用哪一组、Googlebot-Image 和 AdsBot-Google 等的特殊处理,以及组的合并方法和容易写错的地方。

阅读文章 →
使用指南约 8 分钟

用 robots.txt 屏蔽 AI 爬虫:GPTBot、ClaudeBot 等

越来越多的站长不希望自己网站的文字和图片被拿去训练 AI。只要在 robots.txt 中写上 AI 爬虫的名称,就能要求各公司的爬虫停止抓取。不过 AI 爬虫分为“训练用”“AI 搜索用”“按用户指令访问”三类,屏蔽哪一类,影响差别很大。本文整理主要 AI 爬虫的名称与用途、按目的划分的 robots.txt 写法,以及屏蔽时的注意事项。

阅读文章 →