robots.txt 是放在网站根目录下的一个纯文本文件,用来告诉爬虫可以访问网站的哪些部分。它简单、强大,也很容易出错:一行代码就可能让搜索引擎停止抓取你的整个网站。
本指南介绍它的工作原理、如何安全地编写它,以及如何应对越来越多的 AI 爬虫。
robots.txt 放在哪里
这个文件必须位于每个主机的根目录:
https://example.com/robots.txt
它只适用于完全相同的主机和协议。blog.example.com 需要自己的文件,如果 http:// 也提供内容,同样需要(不过它本来就应该重定向到 HTTPS)。
如果没有 robots.txt(服务器返回 404),爬虫会认为可以抓取所有内容。
基本语法
User-agent: *
Disallow: /admin/
Disallow: /cart
Allow: /admin/public-help/
Sitemap: https://example.com/sitemap.xml
- User-agent 指定一组规则适用于哪个爬虫。
*表示所有爬虫。 - Disallow 列出爬虫不应获取的路径前缀。
- Allow 在被禁止的区域内设置例外。
- Sitemap 给出 XML 站点地图的完整 URL。它可以出现在文件中的任何位置,并适用于所有爬虫。
以 # 开头的行是注释。
通配符
Google、Bing、百度和大多数主要爬虫都支持两个特殊字符:
*匹配任意字符序列:Disallow: /*?sort=会屏蔽任何包含?sort=的 URL$表示 URL 的结尾:Disallow: /*.pdf$会屏蔽以.pdf结尾的 URL
规则如何匹配
robots.txt 现在是一项正式的互联网标准(RFC 9309,于 2022 年发布),它基于 Google 长期以来的处理方式:
- 爬虫使用
User-agent与其匹配最具体的那一组规则。如果存在User-agent: Googlebot组,Googlebot 就会遵循它,并忽略*组。 - 在该组中,最具体(最长)的匹配规则胜出。
- 如果 Allow 规则和 Disallow 规则同样具体,Allow 胜出。
示例:
User-agent: *
Disallow: /shop/
Allow: /shop/sale/
/shop/sale/shoes 被允许(Allow 规则更长),而 /shop/new/shoes 被屏蔽。
获取并验证 robots.txt,测试任意网址是否对 Googlebot 或 AI 机器人禁止访问。
robots.txt 能做什么,不能做什么
它控制的是抓取,而不是收录。 如果其他页面链接到某个被禁止的 URL,它仍然可能出现在搜索结果中,通常不显示描述。要让页面不出现在搜索结果中,应允许抓取,并改用 noindex robots meta 标签或 X-Robots-Tag 标头。
它是公开的。 任何人都可以读取你的 robots.txt。绝不要用它来隐藏私密区域,那等于在公开宣传它们。请用身份验证来保护私密内容。
它是自愿遵守的。 正规的爬虫会遵守它,恶意机器人则会无视它。
安全的示例
允许所有内容(并指向站点地图)
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
WordPress
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Sitemap: https://example.com/wp-sitemap.xml
网店
User-agent: *
Disallow: /cart
Disallow: /checkout
Disallow: /account
Disallow: /*?*sort=
Disallow: /*?*filter=
Sitemap: https://example.com/sitemap.xml
屏蔽排序和筛选参数,可以防止爬虫在成千上万个近似重复的 URL 上浪费时间。
测试站(屏蔽全部内容)
User-agent: *
Disallow: /
只在测试站或开发站上使用这种写法,更好的做法是用密码保护它们。上线时忘记删除这条规则,是网站从搜索结果中消失最常见的原因之一。
生成包含站点地图、禁止目录和 AI 爬虫控制的 robots.txt 文件。
处理 AI 爬虫
AI 公司运行着几种不同的爬虫,区别对待它们是值得的:
| 用途 | 示例 | 屏蔽的效果 |
|---|---|---|
| 训练:收集内容以训练模型 | GPTBot(OpenAI)、ClaudeBot(Anthropic)、Google-Extended(Google 的 Gemini 训练控制)、CCBot(Common Crawl)、Applebot-Extended | 你的内容不会用于未来的训练。对搜索可见度没有影响。 |
| AI 搜索:获取页面以在 AI 搜索中回答和引用 | OAI-SearchBot、Claude-SearchBot、PerplexityBot | 你的页面可能不会作为来源出现在这些 AI 搜索引擎中。 |
| 用户请求的获取:当有人让助手阅读某个页面时 | ChatGPT-User、Claude-User、Perplexity-User | 当用户提出请求时,助手可能无法读取你的页面。 |
Google-Extended 是一个控制标识,而不是独立的爬虫:屏蔽它可以阻止内容被用于 Gemini 模型训练,但不会影响依赖 Googlebot 的 Google 搜索或 AI 摘要。
一种常见的折中配置是屏蔽训练,同时在 AI 搜索中保持可见:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: CCBot
Disallow: /
User-agent: *
Allow: /
由于爬虫的名称和用途会变化,请定期查看各服务商的文档。
检查 ChatGPT、Claude、Perplexity 和 Google AI 能否访问、读取并引用你的页面。
常见错误
- 保留了测试站的
Disallow: /。 每次上线或迁移后,务必检查 robots.txt。 - 屏蔽 CSS 和 JavaScript。 Google 需要它们来渲染页面;屏蔽它们可能会让页面在 Googlebot 看来是坏的。
- 用 robots.txt 把页面从 Google 中移除。 被屏蔽的页面无法被看到其 noindex 设置。请改用 noindex。
- 屏蔽了带有你希望搜索引擎看到的 canonical 或重定向的页面。
- 拼写错误和大小写错误。 路径区分大小写:
/Admin/和/admin/是不同的。 - 文件过大。 Google 只读取前 500 KiB。
- robots.txt 返回错误。 如果 robots.txt 返回 5xx 错误,Google 可能会暂时停止抓取网站。
测试修改
在发布新的 robots.txt 之前,用它测试你最重要的 URL:首页、主要分类和产品页面,以及 CSS 和 JavaScript 文件。Search Console 的 robots.txt 报告会显示 Google 最近一次获取的版本以及发现的问题。
robots.txt、noindex 与密码保护的区别
这三种工具解决的是不同的问题,把它们混为一谈是收录问题的常见根源:
| 目标 | 正确的工具 | 原因 |
|---|---|---|
| 在低价值 URL(筛选、站内搜索)上节省抓取时间 | robots.txt Disallow | 让爬虫完全不去获取它们 |
| 让页面不出现在搜索结果中 | noindex meta 标签或 X-Robots-Tag | 爬虫必须能获取页面才能看到它 |
| 保持内容私密 | 密码或登录 | 只有身份验证才能真正阻止访问 |
| 快速从 Google 中移除页面 | noindex 加上 Search Console 中的“移除”工具 | 在 noindex 生效期间,该工具会暂时隐藏页面 |
处理参数和分面导航
电商和信息列表类网站经常为每种筛选组合生成这样的 URL:
/shoes?colour=red
/shoes?colour=red&size=8
/shoes?colour=red&size=8&sort=price
如果这些页面对搜索者没有独特价值,就屏蔽那些会产生无穷组合的参数,例如排序:
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*sessionid=
注意不要屏蔽你确实希望获得排名的筛选页面。例如,一个有真实搜索需求的“红色跑鞋”页面,应该是一个可抓取、可收录、拥有自己内容的 URL。
阅读任何网站的 robots.txt
查看竞争对手的 robots.txt 文件可能很有启发。你可以看到他们不让爬虫进入哪些栏目、站点地图放在哪里,以及如何处理 AI 爬虫。由于该文件是公开的,当你管理的网站突然失去可见度时,它也是第一个要检查的东西。
测试与监控
robots.txt 的修改风险很高,所以要像对待代码一样对待它:
- 编辑前保留上一个版本的副本
- 发布前,用新规则测试重要的 URL:首页、主要分类和产品、CSS 和 JavaScript 文件
- 发布后,检查文件是否返回 200 状态码和纯文本,而不是 HTML 错误页面
- 在接下来的几天里,监控 Search Console 的 robots.txt 报告和“网页索引编制”报告
一些内容管理系统和 SEO 插件会动态生成 robots.txt。如果你上传了一个实体的 robots.txt 文件,它通常会覆盖虚拟文件。请确认你编辑的是实际提供的那个版本。
要点总结
- robots.txt 控制的是抓取,而不是收录;要让页面不出现在搜索结果中,请使用 noindex。
- 最具体的匹配规则胜出,平局时 Allow 优先于 Disallow。
- 绝不要屏蔽页面渲染所需的 CSS 或 JavaScript 文件。
- 把 AI 训练爬虫和 AI 搜索爬虫区分开;屏蔽训练不会影响搜索。
- 每次上线和迁移后,务必检查 robots.txt 中是否残留了 Disallow: / 规则。
- 在发布任何修改之前,先用它测试重要的 URL。
常见问题
我需要 robots.txt 文件吗?
严格来说不需要。没有它,爬虫会访问所有内容。但 robots.txt 是列出站点地图、阻止爬虫进入低价值区域的标准位置,所以大多数网站都应该有一个。
Google 支持 crawl-delay 吗?
不支持。Googlebot 会忽略 Crawl-delay。Bing 和其他一些爬虫会遵守它。
修改多久后生效?
Google 通常会将 robots.txt 缓存最多 24 小时,所以修改可能需要一天时间才会被识别。
我可以屏蔽某个特定页面吗?
可以,写成 Disallow: /private-page。但请记住,这屏蔽的是抓取,而不是收录。如果目的是让它不出现在搜索结果中,请使用 noindex。
检测你自己的网站
免费运行 55+ 项检查,每个问题都有修复方法。