robots.txt 生成器,免费
为您的网站快速构建 robots.txt 文件。
快速起步预设
使用方法
- 选择预设或手动构建规则。
- 添加带 Allow/Disallow 路径的 user-agent 组。
- 添加您的 sitemap URL。
- 复制或下载文件,将其放到网站根目录。
常见问题
robots.txt 文件放在哪里?
它必须位于您域名的根目录:https://yourdomain.com/robots.txt。放在子目录中不起作用。
robots.txt 会阻止 Google 索引页面吗?
robots.txt 阻止爬虫抓取页面,但不会将它们从搜索结果中移除。要做到这一点,请使用 noindex meta 标签。
什么是 AI 爬虫?
GPTBot、CCBot 和 Google-Extended 等 AI 爬虫会收集内容以训练 AI 模型。您可以在 robots.txt 中专门阻止它们。
1994年诞生、2022年正式标准化的协议
机器人排除协议由Martijn Koster于1994年2月设计,近三十年后才于2022年9月正式编纂为 RFC 9309。28年间,它是一个所有人都同意遵守但没有人在细节上达成一致的事实标准。RFC明确了语法(User-agent/Disallow/Allow行)、优先级规则、文件大小限制(解析器必须至少接受500 KiB),以及如何处理错误(4xx → 爬虫可访问任何内容;5xx → 爬虫必须假设完全禁止)。大多数主流搜索引擎爬虫在RFC发布前就遵循大致相同的行为,但细微差异确实存在。
文件的存放位置
robots.txt文件必须以确切的URL /robots.txt 从您的源站根目录提供(每个协议+主机+端口一个)。子目录无效;/blog/robots.txt 对爬虫而言只是404。每个子域都需要自己的文件(www.example.com/robots.txt 和 blog.example.com/robots.txt 是独立的文件)。该文件为纯文本,以 text/plain 格式提供,UTF-8编码(允许但强烈不建议使用BOM)。
语法速览
# Comments start with #
User-agent: * # Apply to all crawlers
Disallow: /admin/ # Block this directory
Disallow: /search # Block search results
Allow: /admin/login # Allow this path even within /admin/
User-agent: Googlebot # Specific Googlebot rules
Disallow: /test/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml
关键行为:
- 分组结构。一个「分组」以一行或多行
User-agent:开始,持续包含Allow:/Disallow:规则,直到下一个User-agent:开始新分组。 - 越具体越优先。最具体的user-agent分组适用于特定爬虫。Googlebot读取其
User-agent: Googlebot规则,完全忽略User-agent: *规则。 - 空的
Disallow:意味着「允许一切」。Disallow: /意味着「禁止一切」。斜杠的有无至关重要。 - 通配符。
*匹配任意字符序列;$匹配URL末尾。Disallow: /*.pdf$屏蔽所有PDF。这些官方上是Google扩展,但大多数主流爬虫均接受。 - 区分大小写。User-agent名称不区分大小写(Googlebot = googlebot)。规则中的URL路径在区分大小写的文件系统上区分大小写(
/Page≠/page)。
robots.txt不能做什么
最常见的误解之一,Google在其官方文档中也明确指出:robots.txt阻止的是抓取,而非索引。如果某页面从网络其他地方有链接指向,Google可能会对该URL建立索引(并在搜索结果中以「本页面暂无信息」之类的占位符显示),即使它从未抓取过该页面。要真正将页面排除在搜索结果之外,请在页面本身使用 <meta name="robots" content="noindex"> 标签,或使用 X-Robots-Tag: noindex HTTP响应头。爬虫必须能访问该页面才能看到noindex指令,这意味着如果您已向页面添加了noindex,就不应在robots.txt中对其使用Disallow,因为爬虫将永远看不到noindex指令。
robots.txt还有哪些做不到的事:
- 隐藏敏感URL。该文件是公开可读的,任何人都可以访问
yoursite.com/robots.txt。列出诸如/admin/或/internal-tools/之类的路径会告知所有人这些URL的存在。对于真正需要保密的内容,请使用身份验证;对于「只是不要索引」,请使用noindex。 - 阻止恶意爬虫。恶意方会完全无视robots.txt。它只是对行为良好的爬虫发出的请求,而非强制执行。
- 可靠地屏蔽嵌入卡片爬虫。
facebookexternalhit、Twitterbot、LinkedInBot,以及Slack和Discord的机器人都会读取robots.txt,但如果您屏蔽它们,您的分享链接将无法在这些平台上渲染预览。如果您希望分享卡片正常显示,请明确允许它们。
值得了解的User-Agent
| User-agent | 所有者 | 抓取用途 |
|---|---|---|
Googlebot | 网页搜索索引 | |
Bingbot | Microsoft | Bing搜索索引 |
DuckDuckBot | DuckDuckGo | DuckDuckGo搜索 |
Slurp | Yahoo | Yahoo搜索 |
YandexBot | Yandex | 俄罗斯搜索 |
Baiduspider | Baidu | 中文搜索 |
facebookexternalhit | Meta | Facebook分享卡元数据 |
LinkedInBot | LinkedIn分享预览 | |
Twitterbot | X / Twitter | 推文卡元数据 |
Slackbot | Slack | Slack链接展开 |
Discordbot | Discord | Discord链接预览 |
AI爬虫问题
2023年以来,大量AI训练爬虫涌现,许多站点已在robots.txt中添加规则以选择退出AI训练。主要的爬虫包括:
- GPTBot:OpenAI的训练爬虫。
- ChatGPT-User:ChatGPT用户要求抓取某URL时使用的OpenAI按需爬虫。
- OAI-SearchBot:OpenAI搜索产品的爬虫。
- Google-Extended:Google专用于AI训练(Bard/Gemini)的独立令牌,与Googlebot相互独立。允许您在允许搜索的同时屏蔽AI训练。
- ClaudeBot / Claude-User / Claude-SearchBot:Anthropic的各类爬虫。
- PerplexityBot:Perplexity AI。
- CCBot:Common Crawl,大多数大型语言模型训练所用的开放数据集。
- Bytespider:ByteDance / TikTok。
- Applebot-Extended:Apple Intelligence的独立令牌,类似于Google-Extended。
有两点重要事项:(1)退出是自愿的,因为只有遵守robots.txt的爬虫才会受到影响;(2)「搜索」和「AI训练」之间的界限正在迅速模糊,屏蔽所有AI爬虫也可能影响您的内容在AI摘要搜索结果中的呈现方式。可将上方的「屏蔽AI爬虫」预设作为起点,然后根据您站点的具体情况决定如何取舍。
Crawl-Delay及Google为何忽略它
非标准的 Crawl-delay: 指令要求爬虫在对您服务器的请求之间等待N秒。Bing、Yandex和许多较小的爬虫会遵守它。Google不会。Google的文档明确指出Googlebot会忽略Crawl-delay。Search Console曾提供手动抓取频率设置,但Google已在2024年初针对大多数站点弃用该功能,现在会根据服务器响应自动调整抓取频率。如果您的目标是专门限制Googlebot,robots.txt不是正确的工具。
Sitemap指令
在robots.txt中列出您的站点地图,是向爬虫提示URL列表位置的方法。请使用绝对URL(完整的 https://),每行一个。对于将内容拆分到多个站点地图的站点,可以列出多个站点地图(主站点地图、新闻站点地图、视频站点地图、图片站点地图)。Sitemap指令并非最初robots.txt协议的正式组成部分,但所有主流搜索引擎均支持读取。
常见错误
- 禁止CSS/JavaScript文件。Google使用渲染后的内容进行排名。如果Googlebot无法获取您的
/css/或/js/目录,它就无法正确渲染您的页面,从而损害SEO。请勿屏蔽资源目录。 - 将Disallow与noindex混淆。Disallow阻止抓取;页面仍可能通过入站链接出现在搜索中。对实际的索引控制,请使用noindex元标签。
- 列出私有URL。robots.txt中的任何内容都是公开可读的。如果您不想让攻击者知道
/admin/或/wp-admin/的存在,请勿将其列出;应改用适当的身份验证并依靠noindex。 - 写了空的
Disallow:,本意是Disallow: /。空值允许一切;Disallow: /禁止一切。两者相反。 - 屏蔽了嵌入爬虫后又疑惑为何分享预览不显示。如果您禁止了facebookexternalhit,您的分享链接将无法渲染Facebook卡片。如果您需要预览,请明确允许社交媒体机器人。
- 忘记添加Sitemap行。这是免费且有用的,而且大多数生成器都会省略它。
- 寄望于Crawl-delay来限制Google。它不起作用。请使用Search Console。
- 试图通过robots.txt按IP/地区/设备屏蔽。该协议没有这些概念。请改用服务端规则。
- 不测试文件。Google于2023年11月停用了独立的robots.txt测试工具,并以Search Console中的robots.txt报告取而代之;该报告会标记语法错误并显示最近一次抓取情况。在部署前务必检查(或使用其他开源的robots.txt验证工具)。
更多常见问题
文件具体放在哪里?
域名的根目录,通过 https://yoursite.com/robots.txt 精确访问。在大多数主机上,这意味着将 robots.txt 放在您的 public / htdocs / www 根目录中。WordPress和许多CMS会动态生成一个;在添加静态文件之前请检查您的CMS是否已有(若两者并存,静态文件优先)。
我需要robots.txt吗?
从技术上讲不需要。没有robots.txt时,爬虫默认「允许一切」,对大多数公开站点来说没有问题。但您几乎总是会想要一个,用于指向您的站点地图、屏蔽明显的抓取陷阱(搜索结果页、分页存档、参数化URL),以及越来越多地选择退出AI训练。一个空的或默认允许的robots.txt仍然有用,可作为放置Sitemap行的地方。
robots.txt最大可以多大?
RFC 9309要求解析器至少接受500 KiB(约500,000字节)。Google强制执行500 KiB限制,超出部分将被忽略。绝大多数robots.txt文件远小于1 KiB。如果您的文件接近上限,可能是列出了太多具体URL,应改用通配符模式。
如果robots.txt返回500错误会怎样?
根据RFC 9309,当爬虫因服务器错误(5xx)无法获取robots.txt时,必须假设完全禁止,即Google和其他合规爬虫将停止抓取您的站点,直到文件再次可访问。如果您的robots.txt端点宕机,您的搜索可见性也会随之下降。请确保它保持可用。
Crawl-delay对Google有效吗?
Google明确忽略Crawl-delay。该指令对Bing、Yandex和大多数其他爬虫有效。Search Console曾提供的手动抓取频率设置已在2024年初针对大多数站点弃用;Google现在根据您服务器的响应情况自动调整抓取频率。在robots.txt中设置Crawl-delay不会造成任何问题,只是不会改变Googlebot的行为。
我应该屏蔽AI爬虫吗?
需要权衡取舍。屏蔽GPTBot、Google-Extended、ClaudeBot等,可以让您的内容退出这些模型的训练数据,如果您想限制内容的再利用,这是正确的选择。代价是:随着AI摘要搜索结果越来越普遍,被屏蔽的内容也可能更难被引用或呈现。许多出版商选择屏蔽AI训练爬虫,但允许AI搜索爬虫(OAI-SearchBot等)以保持可被引用的资格。「屏蔽AI爬虫」预设采取的是最大化屏蔽策略;请根据您的优先级进行调整。