Robots.txt 是一个存放在网站根目录的纯文本文件,通过特定指令与搜索引擎爬虫沟通,告知它们哪些内容可以抓取、哪些路径应该绕开。它并非强制性的技术屏障,而是依靠爬虫自觉遵守的协作约定,配置得当既能提升抓取效率,也能减轻服务器的无效负担。
当爬虫访问一个站点时,第一件事就是请求根目录下的 robots.txt 文件,以此决定后续的抓取策略。如果没有这个文件,爬虫会默认站点内所有公开内容均可抓取。
在日常运营中,这份文件主要用于处理几类需求:屏蔽后台登录入口、排除低价值页面(如站内搜索结果页或自动生成的标签页)、限制部分路径的抓取以避免服务器压力过大。但必须清醒认识到,守规矩的搜索引擎会遵守这些指令,而恶意程序或采集工具通常视若无物,所以它毫无安全防护作用。
Robots.txt 的内容由一组组记录构成,每条记录先声明 User-agent 指定适用的爬虫,再列出具体指令。掌握下面几个基础指令,就能应对绝大多数场景:
下面是一个结构清晰、便于理解的参考配置:
User-agent: *
Disallow: /cache/
Disallow: /private/
Allow: /private/readme.html
Sitemap: https://www.example.com/sitemap.xml
这段配置表达的意思很明确:所有爬虫都不能访问 cache 和 private 这两个目录,但 private 下的 readme.html 被单独放行,同时提供了站点地图的位置。
配置本身不难,但实际操作中稍微疏忽就可能适得其反,以下几类场景要格外留意:
文件上传后并不是一劳永逸,建议定期检查并验证规则的实际效果。具体的操作习惯可以从以下几点入手:
一个常见的坑是:只写了 Disallow 规则,却忘了提供 Sitemap 地址,导致爬虫发现新内容的路径变长,收录速度明显下降。务必在文件中保留 Sitemap 行,并将其更新为当前有效地址。
能阻止抓取,但不等于阻止收录。更准确地说,禁止抓取通常会导致页面不出现在搜索结果中,但如果其他网站链接了该页面,搜索引擎仍可能仅凭链接信息将其展示出来(通常不显示内容摘要)。若必须彻底从索引中移除,应结合无索引标签或站长平台的删除工具。
每个 User-agent 组是独立生效的。爬虫只会匹配与自己名称完全相符的那条记录,若没有精确匹配,则可能匹配通配符 * 的那一组。例如百度会读取 User-agent: Baiduspider 下的规则,而不会读取只针对 Googlebot 的记录。建议先写所有爬虫通用的规则,再写特定爬虫的单独规则。
在同一组记录内部,Allow 的优先级高于 Disallow。也就是说,如果 Disallow 屏蔽了整个目录,但 Allow 单独放行了其中某个文件,爬虫会遵循放行指令。但不同引擎的匹配逻辑略有差异,务必用站长工具实际测试后再确认最终效果。
Robots.txt 的配置核心在于明确意图、语法准确、定期维护。建议从最小必要的规则入手,先屏蔽确定无价值的路径,再逐步补充其他限制;每次修改后都验证一遍,并将文件纳入站点改版的维护清单。只要避免全站误屏蔽、记得保留站点地图、及时更新路径,你就能充分发挥这份协议文件的价值。