robots.txt 是一个存放在网站根目录的纯文本文件,主要用来向搜索引擎爬虫说明网站的抓取范围,让爬虫清楚哪些内容可以访问、哪些需要避开。合理配置能够提高抓取效率,让新内容更快被收录;但配置不当则可能造成页面长期无法被索引,甚至影响整个站点的收录情况。下面从语法核心出发,梳理配置要点和容易被忽略的问题。
很多人以为在 robots.txt 里写上 Disallow 就能把页面藏得严严实实,这其实是一个典型误解。这个文件遵循的是行业公认约定,对主流的搜索引擎有效,但恶意采集程序或不守规矩的爬虫并不会理会这些设置。涉及敏感数据的路径,比如后台入口、用户订单记录等,必须依靠登录验证、IP 白名单等硬性防护手段,不能把安全保障寄托在一个文本文件上。
另外,robots.txt 控制的只是“抓取”行为,并不直接决定页面是否出现在搜索结果里。若想彻底阻止某个页面被搜索到,单靠这个文件还不够,还需要在该页面的头部加上 noindex 标签,两者配合才能达到效果。二者的分工不同,适用场景也不同,日常运营中需要区分清楚。
robots.txt 的内容由若干规则组构成,每个规则组以 User-agent 开头,后面跟着一条或多条 Allow 或 Disallow 指令。书写格式为“字段名: 值”,冒号后面建议保留一个空格,字段名用小写字母,这样能减少不同解析器之间可能出现的兼容性问题。
User-agent 用来声明这一组规则是针对哪个爬虫的。比如 User-agent: Baiduspider 只对百度的抓取程序生效,而 User-agent: * 则表示对所有爬虫都适用。你也可以在同一文件中为不同搜索引擎制定差异化的策略,例如禁止百度抓取某个目录,但允许必应收录该目录,这种按需设置在多搜索引擎优化时相当实用。
Disallow 用来声明禁止抓取的路径,Allow 则声明允许抓取的路径。当两条规则同时命中一个链接时,搜索引擎执行“最长匹配优先”的原则,也就是路径字符更长的规则获胜。举例来说,如果同时设置了 Disallow: /api/ 与 Allow: /api/public/,那么 /api/public/ 下的内容可以被正常抓取,而 /api/ 下其他路径则会被禁止访问。此外,Disallow 后面不写内容代表不限制任何路径,适合希望整站开放抓取的情况。
Sitemap 指令用来提交站点地图的完整 URL,有助于爬虫更快发现新页面,缩短自行搜索链接的时间。Crawl-delay 字段则用于设定两次抓取请求之间的间隔秒数,适合服务器性能有限的网站使用。不过需要留意的是,并非所有搜索引擎都认可 Crawl-delay,部分爬虫会直接忽略此参数,所以不能完全依赖这一项来控制抓取频率。
根据网站类型的差异,可以参考下面几种配置思路来调整:
设置完成后,务必要对规则进行验证。可以通过搜索引擎官方的 robots.txt 测试工具来检查语法是否合法、规则是否按预期生效,避免因书写错误导致意外封禁。
在实际操作中,有些错误反复出现,值得特别留意:
避坑建议:不要频繁改动 robots.txt,每次修改后都应做好备份;同时把文件放置于网站根目录,并确保文件名严格为 robots.txt(全小写)。
有可能。Disallow 只是告诉爬虫不要抓取该页面,但如果页面已被其他网站引用,搜索引擎仍可能根据外部信号将 URL 收录。要彻底阻止页面出现在搜索结果中,需要在页面头部添加 noindex 标签,或者直接删除页面内容并返回 404 状态码。
主流搜索引擎提供了相应的检测工具。比如 Google Search Console 中有 robots.txt 测试器,百度站长平台也有类似的功能。这些工具可以帮你查看爬虫在实际抓取时会执行哪些规则,以及在规则冲突情况下的最终判定结果。测试完毕后建议模拟抓取几个关键页面,确认实际抓取行为与预期一致。
匹配顺序有一定讲究。一般情况下,规则组按 User-agent 的匹配从具体到宽泛排列,特定爬虫的规则组放在前面,通配符 * 的规则组放在后面。在同一规则组内部,按指令的路径长度来判断优先级,路径更长的匹配优先级更高。建议保持规则简洁,避免同一路径被多条规则重复覆盖。
robots.txt 是站点与搜索引擎之间沟通的基础工具,配置得当能显著提升抓取效率和收录速度。关键要记住:它只是抓取公约,并非安全措施;理解 User-agent、Allow/Disallow 的匹配逻辑,以及 Sitemap 和 Crawl-delay 的使用场景,能避免大部分常见问题。建议你在配置前先备份当前文件,修改后务必用官方工具验证,同时根据站点的实际结构灵活调整,不要生搬硬套模板。定期检查抓取日志和收录情况,及时修正不合理的规则,才能让网站的搜索引擎表现持续稳定。