robots.txt 是存放在网站根目录下的纯文本协议文件,用来向搜索引擎爬虫声明哪些 URL 可以抓取、哪些应当避开。合理运用这份文件能够高效利用抓取配额、保护私有目录;但配置稍有疏忽,也可能导致整站页面从搜索结果中消失。本文围绕其语法细节、匹配机制与常见错误展开,帮助站点管理者正确掌握这一工具。
robots.txt 本质上是一种行业通行的君子协定,主流爬虫会遵守其中声明,但它既非法定强制标准,也不能替代真正的安全防护。文件本身对所有人公开可见,因此绝不能将涉及用户敏感数据、后台管理入口或内部接口的路径写在其中作为保护手段。
它通常负责三类工作:一是屏蔽后台、测试站点或未完善页面,防止其被收录;二是拦截带有大量追踪参数或无限分页的地址,避免抓取预算被白白浪费;三是在文件内声明 Sitemap 路径,引导爬虫更快找到并索引新增内容。理解这些用途,才能判断哪些规则值得写、哪些问题根本不适合靠它解决。
文件按“字段名: 值”的格式逐行书写,字段名不区分大小写,而路径部分严格区分大小写。用户代理的分组、空行与注释(以 # 开头)共同构成规则结构。掌握五个字段即可应对绝大多数场景。
案例一:某商城目录 /shop/ 下所有商品均禁止收录,但促销页 /shop/promo.html 必须保留索引权限,同时需告知地图位置,配置如下:
User-agent: *
Disallow: /shop/
Allow: /shop/promo.html
Sitemap: https://www.example.com/sitemap.xml
案例二:仅允许百度爬虫抓取 /news/ 目录,并设置抓取间隔为 2 秒;对其他爬虫则完全关闭:
User-agent: Baiduspider
Disallow:
Crawl-delay: 2
User-agent: *
Disallow: /
robots.txt 的匹配依据是最长匹配原则,同时 Allow 与 Disallow 的优先级取决于规则集合中哪一个更长。具体而言,同组别内哪个规则的前缀与目标 URL 的匹配长度更长,即优先采用;若长度相同,则以 Disallow 为准。
不少管理者在根级规则里写 Disallow: /,结果误伤整个站点;也有人在修改后未清除浏览器或 CDN 缓存导致爬虫读到旧文件。此外,文件名必须精确为 robots.txt,任何多字母、空格或大小写变化都会使其失效。建议每次变更后都做真实抓取回测,而非仅凭肉眼核验。
最常见的错误包括:用 robots.txt 隐藏隐私链接,却忽略其公开属性;过度使用通配符导致意外封禁;或是在 sitemap 中拼写错误 URL 前缀。排障时先查看响应头是否返回 200,再检查语法解析是否有告警,最后结合日志观察实际抓取行为是否与预期一致。
标准协议仅支持通配符 * 和结束符 $,不完整支持正则。例如 Disallow: /private/*.pdf$ 可用于匹配该目录下 PDF,但更复杂的模式可能被爬虫忽略。各搜索引擎对扩展支持不同,建议保持保守用法。
不需要。Sitemap 字段可独立于任何分组,放在文件任意位置均可。但推荐放在文件末尾并给出绝对完整 URL,同时确保该地址能正常访问且不返回 5xx 错误。
多数搜索引擎会在短期内重新抓取该文件,通常几分钟到数小时不等。若需加速,可在站长平台主动提交或请求重新抓取。长时期未失效,请检查代理层或托管平台是否缓存了该文件。
配置 robots.txt 时应始终遵循明确路径、先禁后放、公开验证的流程。对关键改动务必保留变更记录,并借助平台工具逐条模拟测试。