HandyTools Hub

Robots.txt 生成器

可视化构建 robots.txt,按爬虫设置抓取规则

User-Agent 规则

全局设置

生成的 robots.txt

 

无需背诵语法,可视化地生成符合规范的 robots.txt。为每个爬虫添加一条规则组,屏蔽或放行指定路径,附加抓取延迟,并把机器人指向你的 XML 站点地图。生成器会在你输入时校验,且全程在浏览器中运行——配置从不上传,因此你可以为私有测试主机草拟规则而不暴露 URL。

如何使用

从预设或默认的通配组开始。「放行全部」生成 User-agent: * 加一条空的 Disallow:;「屏蔽全部」生成 Disallow: /。点击「添加爬虫」创建更多爬虫组。User-agent 字段对常见机器人(包括 Googlebot、Bingbot、GPTBot 和 CCBot)提供建议,但你也可以输入任何 token。

每个组有两个文本框:一个填写 Disallow 路径,一个填写 Allow 路径,每行一条。路径必须以正斜杠开头。可选的全局设置位于各组下方:以整秒为单位的抓取延迟和一个站点地图 URL。生成的输出会实时更新,校验会标记空的 User-agent、重复的组、不以 / 开头的路径、负的抓取延迟,以及不是有效 http(s) URL 的站点地图值。输出无误后,复制它,或下载为 robots.txt 并上传到网站根目录。

实操示例:屏蔽测试站但保留站点地图

假设你想让测试服务器对所有搜索引擎不可见,同时仍然公布站点地图。添加一个通配组,在 Disallow 中填 /,Allow 留空,并把站点地图设为 https://staging.example.com/sitemap.xml。输出为:

User-agent: *
Disallow: /

Sitemap: https://staging.example.com/sitemap.xml

如果你改为想屏蔽除一个公告页之外的所有内容,就在 Disallow 中填 /,在 Allow 中填 /public-notice.html。因为 Allow 是更长、更具体的匹配,那一个页面保持可抓取,而站点其余部分被屏蔽。

规则匹配原理

爬虫会把请求的 URL 与匹配其 user-agent 组的规则进行比较。匹配是按前缀而非精确相等,所以 Disallow: /admin 会屏蔽 /admin、/admin/users,也会屏蔽 /administrator——这是常令人意外的地方。末尾的斜杠会收窄匹配:Disallow: /admin/ 屏蔽该目录,却放过 /administrator。

* 匹配任意字符序列,$ 锚定 URL 末尾,因此 Disallow: /*.pdf$ 屏蔽站点上任何位置的 PDF。* 作为 user-agent 时匹配所有没有自己具名组的爬虫。一个爬虫只遵守一个组:如果存在具名组就遵守具名组,否则遵守通配组。这就是为什么添加一个专门的 GPTBot 组不会干扰你的 Googlebot 规则。

屏蔽、noindex 与身份验证的选择

正确的控制方式取决于你想达成什么,这些手段并不能互换。下表是能避免大多数搜索可见性事故的经验法则。

目标使用原因
为分面或站内搜索 URL 节省抓取配额Disallow页面留在爬虫队列之外,但仍可通过链接被索引
让页面彻底不出现在搜索结果中noindex meta 标签或 X-Robots-Tag机器人必须抓取页面才能看到指令,所以不要 Disallow 它
保护私有数据身份验证或密码门禁robots.txt 是公开的,无法强制执行访问控制
阻止整个测试环境被抓取对 * 使用 Disallow: /让非生产主机不进索引的最快方式

一个常见模式是在 robots.txt 中屏蔽分面 URL,同时让规范的产品页保持可抓取。如果某个页面必须既不被抓取也不被索引,那么 Disallow 没问题,因为你已经决定它永远不该被看到。

常见错误

  • 把 robots.txt 当成访问控制。 该文件是公开的;任何人都能读到你列出的路径。绝不要把管理后台、API 密钥或私有文档放在 Disallow 规则后面并指望它保密。请使用身份验证。
  • 期待 noindex 行为。 禁止抓取 URL 会阻止抓取,因此爬虫可能永远看不到页面的 noindex 标签。屏蔽和去索引是两回事。
  • 忘记开头的斜杠。 Disallow: admin 不是有效路径。每条规则都必须以 / 开头。
  • 为同一个机器人创建两个组。 针对一个爬虫的重复 User-agent 行会以含糊方式合并。每个 agent 只保留一个组。
  • 在面向 Google 的文件里留着 Crawl-delay 并以为有效。 Google 忽略它;请使用 Search Console 的抓取速率设置。
  • 屏蔽 CSS 和 JavaScript。 如果 Disallow 掉资源目录,爬虫无法正确渲染页面,可能误判移动友好性和内容。

边界情况与坑

Crawl-delay 指令只会写入第一个组,以符合常见爬虫的预期;如果你的第一个组是特定机器人,延迟就作用于那里。缺失的 robots.txt(HTTP 404)被视为「放行全部」,而服务器错误(5xx)可能让爬虫完全退避,所以要确保文件可访问。使用不带字节顺序标记的 UTF-8;User-agent 前多余的 BOM 会让首行无法解析。最后,user-agent 匹配对 token 本身不区分大小写,因此 Googlebot 和 googlebot 指向同一个爬虫。

空的 Disallow: 与 Disallow: / 恰好相反,手工编辑时容易混淆。前者放行整个站点,后者屏蔽它。以 # 开头的注释会被忽略,因此可以随意添加说明,但要让注释独占一行,不要跟在规则后面,因为一些较旧的解析器会错误处理行内注释。

本工具的校验能在问题进入生产前捕获结构错误,但仍有几项检查值得手动完成。确认文件在 https://yourdomain.com/robots.txt 返回 HTTP 200——Google 会跟随该处的重定向,但部分爬虫会忽略。用隐私窗口打开该 URL,确保你的服务器没有在文本前面加一个 HTML 错误页。然后抓取 https://yourdomain.com/robots.txt,确认第一行是 User-agent,而不是杂散字符。

上线后,使用 Google Search Console 中的 robots.txt 报告和 Bing Webmaster Tools 的对应报告,找出你无意屏蔽的资源。如果你管理多个主机,让测试文件保持严格、生产文件保持宽松,并在新增 /shop/ 或 /api/ 这样的顶层分区时重新审查该文件。

相关工具

常见问题

robots.txt 能阻止被屏蔽的页面出现在 Google 搜索结果里吗?

不能。robots.txt 控制的是抓取,不是索引。你 Disallow 的页面如果被其他网站链接,仍可能出现在搜索结果中,通常没有摘要。要让页面不进索引,请改用 noindex meta 标签或要求身份验证。

当 Allow 和 Disallow 规则匹配同一路径时会发生什么?

最具体的规则胜出——即匹配路径最长的那条。Disallow: /docs/ 加 Allow: /docs/public.html,意味着 public.html 可抓取,而 docs 其余部分保持屏蔽。本生成器保留你输入的顺序,但爬虫按具体程度而非顺序裁决。

路径里可以用 * 和 $ 这样的通配符吗?

Google、Bing 和 Yandex 支持用 * 匹配任意字符、用 $ 锚定 URL 末尾,但许多较小的爬虫会忽略它们。本生成器只写普通的前缀路径,如果你需要通配符就手工添加,并用爬虫的 URL 检查工具测试结果。

为什么 Google 忽略我的 Crawl-delay 行?

Crawl-delay 不属于机器人排除协议,Google 不支持它。Bing、Yandex 及其他几个爬虫会遵守。本工具只把 Crawl-delay 写进第一个 user-agent 组,这是那些爬虫预期的惯例。

Sitemap 指令该放在哪里——组内还是文件末尾?

放在文件末尾,作为独立指令,因为 Sitemap 不隶属于任何 user-agent 组。它必须是包含 https:// 的完整 URL,且可以列出多个。生成器总是把它追加在所有规则组之后。

空的 Disallow 行到底是什么意思?

空的 Disallow: 行表示对该 user-agent 放行一切。「放行全部」预设生成的正是这一行。这是表达「没有限制」的惯用方式,爬虫会把它视为完全访问。

由 HandyTools Hub 团队审校 · 最后更新