robots.txt完整配置指南:语法规则、匹配机制与避坑要点

📍 WDQWDWQD987AAAAA:216.73.217.122
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /3066a34788b5.html
📄

robots.txt 是网站根目录下的一个纯文本文件,通过约定指令告知搜索引擎爬虫哪些路径可以抓取、哪些应当忽略。正确设置它能高效利用抓取配额并保护敏感目录,但一条错误的规则也可能让整站从搜索结果中消失。下面从语法规则、匹配机制到高频错误,逐一拆解这份协议的使用方法。

1. 适用场景与边界:它不能做什么

robots.txt 本质上是一份面向爬虫的公开声明,属于行业内共同遵守的协作规范,并非强制性的安全工具——主流搜索引擎会遵循其中的指令,但它既没有法律约束力,也无法提供真正的访问拦截。

在日常站点管理中,它通常用来解决三类问题:其一,屏蔽后台管理、临时页面或测试环境等无须被收录的路径;其二,拦截携带大量追踪参数的动态链接,避免爬虫资源被无效消耗;其三,在文件内声明 Sitemap 地址,引导爬虫更快发现新内容。

需要特别留意的是,该文件对所有访客都是公开可读的。因此,任何涉及用户隐私、登录接口或内部系统的地址,绝不能单纯指望 robots.txt 隐藏,必须配合登录验证、IP 白名单等更硬性的访问控制方案。

2. 核心字段逐一拆解:五个关键词搞定基础配置

robots.txt 以“字段: 值”的形式逐行书写,字段名不区分大小写,但路径部分区分大小写。掌握以下五个字段,足以应对绝大多数配置场景。

2.1 字段含义速览

2.2 个组合示例

假设站点后台目录为 /admin/,但其中 /admin/help.html 需要被搜索引擎收录,同时想告知爬虫站点地图位置,可以这样写:

User-agent: *
Disallow: /admin/
Allow: /admin/help.html
Sitemap: https://www.example.com/sitemap.xml

这段配置表达了三层含义:默认禁止抓取 admin 目录;help.html 作为例外放行;最后附上 Sitemap 供爬虫参考。

3. 编写步骤与匹配机制的关键细节

写出合法的 robots.txt 并不难,但匹配顺序上的细微差异往往误伤正常页面。遵循规范的流程和判断标准是避免踩坑的前提。

3.1 推荐的操作流程

  1. 先梳理站点目录结构,明确哪些路径必须屏蔽、哪些必须放行,形成一份清单。
  2. 按“先精确后宽泛”的原则编写规则,避免 Disallow 与 Allow 范围重叠造成歧义。
  3. 将文件命名为 robots.txt 并上传至网站根目录,确保通过浏览器可直接访问验证。
  4. 使用搜索引擎官方的抓取测试工具,模拟不同爬虫验证规则执行结果。

3.2 匹配顺序的核心认知

当一条 URL 同时命中多条 Disallow 与 Allow 规则时,搜索引擎以“最长匹配”为准——即匹配到字符数最多的那条规则生效。例如禁止 /api/ 但允许 /api/public/,那么 /api/public/data.json 会被放行,而 /api/private/data.json 会被拦截。理解这一机制,才能写出不互相冲突的规则。

此外,robots.txt 不支持正则表达式,仅支持前缀匹配。若需屏蔽特定文件类型,应逐条列出,例如 Disallow: /*.pdf$ 这类写法并不被标准支持。

4. 高频错误与排查方向

许多站点因为一条看似无害的规则付出惨痛代价,以下三类错误最为常见,需格外警惕。

4.1 误用通配符屏蔽全站

Disallow: / 会阻止所有爬虫抓取整站内容,一旦误存将直接导致站点从搜索结果中消失。修改时务必确认路径值,避免手误输入根路径。

4.2 规则顺序混乱导致逻辑失效

部分站长将 Allow 写在 Disallow 之前,虽然多数搜索引擎按最长匹配处理,但旧版爬虫可能无法理解这种顺序。建议统一将更具体的规则写在前面,降低兼容性风险。

4.3 用 robots.txt 保护隐私数据

如前所述,该文件并非访问控制工具。不要将含有用户信息的目录写入 Disallow 后便以为万事大吉,应通过服务端鉴权彻底阻止未授权访问。

排查时,可先通过浏览器查看文件是否正常返回,再用官方工具测试具体 URL,并检查是否存在因路径大小写不一致导致的规则失效。

5. 常见问题

5.1 robots.txt 文件可以放在子目录吗?

不可以。robots.txt 必须位于站点根目录,例如 https://example.com/robots.txt,子目录下的同名文件不会被爬虫识别。

5.2 如何临时禁止所有搜索引擎抓取但又保留收录?

可在文件顶部写入 User-agent: * 和 Disallow: /,待恢复抓取时删除这两行即可。若需彻底移除已收录页面,应配合 noindex 标签或搜索引擎的移除工具使用。

5.3 文件内容是否有大小写要求?

字段名不区分大小写,但路径值区分大小写。例如 Disallow: /Admin/ 不会拦截 /admin/ 路径。建议统一使用小写路径,降低出错概率。

6. 总结

robots.txt 的配置原则可以概括为:明确需求、精确书写、持续验证。开工前先理清哪些路径必须屏蔽、哪些必须放行;书写时遵循最长匹配规则、避免通配符滥用;上线后定期用抓取测试工具复查。记住它只是协作声明,涉及敏感数据务必叠加访问控制措施。建议每次修改后都记录变更内容,并观察搜索引擎抓取统计,确保规则始终服务于站点收录目标。

图1 图2

nginx