robots.txt 完整配置指南:语法、匹配顺序与常见错误避坑

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

robots.txt 是一个放在网站根目录下的纯文本文件,用来告诉搜索引擎爬虫哪些页面可以抓取、哪些页面应该忽略。配置得当,它能帮你合理分配抓取配额、保护敏感目录;但一条写错的规则,也可能让整个网站从搜索结果中消失。这篇文章会从语法、匹配顺序和高频错误几个方面,帮你理清这份协议的用法。

1. 它到底解决什么问题

robots.txt 本质上是一种面向爬虫的协作约定,主流搜索引擎都会遵守,但它不是强制性的安全机制,也没有任何法律约束力。它更像是一份公开的“访问须知”,而不是一把锁。

在日常站点管理中,它最常见的用途有三个:第一,屏蔽后台、测试环境、暂存站这类不希望被收录的路径;第二,过滤带大量追踪参数的动态 URL,避免爬虫把资源浪费在无效页面上;第三,在文件里声明 Sitemap 地址,帮助爬虫更快定位和抓取新内容。

这里必须提醒一句:任何访客都能直接在浏览器里输入域名加 /robots.txt 查看文件内容。所以涉及用户隐私、后台登录入口、内部系统接口的地址,绝对不能靠它来隐藏,必须用登录验证、IP 白名单等硬性手段来控制访问。

2. 五个核心字段,覆盖多数场景

robots.txt 的书写格式是“字段: 值”,每行一条。字段名不区分大小写,但值里的路径部分是区分大小写的。掌握下面五个字段,基本就能应对绝大多数配置需求。

2.1 字段含义与写法

2.2 个组合配置示例

假设网站有个内部目录 /manage/,但其中 /manage/notice.html 这个公告页需要被收录,同时想把 Sitemap 地址告知爬虫,可以这样写:

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

这段配置表达了三层意思:默认禁止所有爬虫抓取 manage 目录;但 notice.html 属于特例,允许抓取;同时附上 Sitemap 地址供参考。

3. 编写流程与匹配顺序的判断标准

写 robots.txt 不难,难点在于匹配顺序的细微差别很容易误伤正常页面。下面给出一套操作流程和判断依据,帮你减少踩坑的可能。

3.1 推荐的操作流程

  1. 先列出不想被收录的目录或文件清单,按优先级排序。
  2. 用具体的 User-agent 指定目标爬虫,避免用 * 影响所有搜索引擎。
  3. 在 Disallow 基础上,用 Allow 精确放行需要收录的例外页面。
  4. 添加 Sitemap 声明,并确认 URL 可正常访问。
  5. 用搜索引擎提供的 robots.txt 测试工具检查每条规则的实际效果。

3.2 匹配规则的几个关键点

爬虫对路径的匹配遵循“最长匹配优先”原则:规则中路径越长、越具体,优先级越高。例如 Disallow: /img/ 和 Disallow: /img/banner/ 同时存在时,后者会先被匹配。另外,空白的 Disallow 值(Disallow: )表示允许抓取,这一点容易被忽略。

需要注意,robots.txt 的匹配是按字符前缀逐字比较的,不是正则表达式。像 /product 这样的写法会匹配 /product、/products、/product_new 等所有以该字符串开头的路径,所以边界不够明确时容易误伤。

4. 高频错误与避坑建议

很多站点因为一行配置失误导致流量骤降,问题往往出在下面几个细节上。

4.1 常见的五个坑

4.2 上线前必做检查

每次修改后,先打开文件确认 UTF-8 编码且在根目录可访问;再用测试工具模拟不同爬虫请求,核对预期结果;最后观察一段时间后台的抓取报告,确认没有异常下降。谨慎一步,能省去后续很多麻烦。

5. 常见问题

5.1 为什么我改了 robots.txt 但收录没有变化?

因为爬虫不会实时读取这个文件,更新的生效可能有几小时到几天的延迟。同时还要确认文件中没有语法错误,并且路径匹配是否符合预期。建议用搜索引擎官方的测试工具验证后再耐心等待。

5.2 robots.txt 能防止别人复制我的内容吗?

不能。它只约束遵守协议的搜索爬虫,无法阻止任何人直接输入 URL 访问或复制页面内容。要防止内容被抄袭,需要依靠版权声明、法律手段或技术手段(如禁止右键复制等),但任何方式都无法彻底杜绝。

5.3 Disallow 和 Allow 同时存在时怎么判断?

取决于哪条规则匹配的路径更长、更具体。如果两个规则路径长度相同,则以 Disallow 为准。实际测试比记忆规则更可靠,建议用测试工具逐条验证。

6. 总结

robots.txt 是一份简单但敏感的配置文件,正确使用能提升抓取效率,用错则可能带来灭顶之灾。建议你从现在开始:梳理一遍全站目录,写清哪些路径该屏蔽、哪些该放行;每次修改后都用测试工具验证;并定期检查抓取报告,确保没有异常。始终记住,它只是协作规范,安全还得靠更硬的访问控制手段。

图1 图2

nginx