robots.txt 是放在网站根目录下的一个纯文本文件,用来告诉搜索引擎爬虫哪些页面可以抓取、哪些不应该访问。很多人以为只要写好这个文件就能控制页面收录,其实它的作用边界比想象中窄得多。正确配置能帮爬虫把抓取预算花在更有价值的页面上,但配置失误也可能导致重要内容迟迟不被索引。理解它的语法底层逻辑和常见误区,是每个站长都需要掌握的基本功。
robots.txt 本质上是一份写给爬虫的“请求信”,而不是一道“防火墙”。它只能影响那些遵守规范的搜索引擎爬虫,例如 Googlebot、Bingbot 等。对于恶意抓取工具、采集脚本或黑客程序,这份文件形同虚设。因此,涉及用户隐私数据、支付接口、后台登录入口等敏感区域,必须依靠密码验证、IP 白名单或服务器层面的访问控制来保护,绝不能让 robots.txt 承担安全防御的职责。
另一个经常被混淆的概念是“禁止抓取”和“禁止索引”。robots.txt 里的 Disallow 只是阻止爬虫去抓取该路径的内容,但爬虫可能通过外部链接或站点地图间接发现这条 URL,并将其展示在搜索结果中(只是没有抓取到正文,所以展示效果很差)。如果你希望某个页面彻底从搜索结果中消失,正确做法是在页面头部加 noindex 标签,而不是仅仅依赖 robots.txt。
robots.txt 的编写格式遵循一套固定的语法结构,每条规则组以 User-agent 字段开头,后续跟着 Allow、Disallow 等指令。规范的写法建议保持字段名小写,冒号后加一个空格,这样可以最大程度兼容不同爬虫的解析器。
User-agent 字段指定了当前规则组对哪种爬虫生效。比如 User-agent: Googlebot 就表示后面的规则只约束谷歌的爬虫;而 User-agent: * 则代表对全部搜索引擎生效。你可以为不同爬虫设置多组规则,从而实现差异化的抓取策略。例如,允许百度抓取图片目录,但对谷歌限制该目录的访问,只要分别建立对应的规则组即可。
Disallow 声明不允许抓取的路径,Allow 声明允许抓取的路径。若 Disallow 后面不带任何路径(比如 Disallow:),则代表完全解除限制,允许所有爬虫访问整站。当一个 URL 同时匹配到 Allow 和 Disallow 时,搜索引擎遵循“最长匹配原则”——也就是路径匹配长度更长的规则优先生效。举个例子,如果同时存在 Disallow: /api/ 和 Allow: /api/public,那么 /api/public/ 下的内容依然可以被抓取,因为后者的路径匹配更长、更精确。理解这一点,可以帮你写出更灵活的精细配置。
Sitemap 指令用来告知爬虫网站地图的存放地址,帮助爬虫更快地发现新页面,减少被动抓取的等待时间。这个指令可以出现在文件中的任意位置,不影响其他规则组的逻辑。
Crawl-delay 字段用于设置两次抓取之间的最小间隔秒数,适合服务器带宽有限或响应较慢的站点使用。但注意,这个参数并非所有爬虫都遵守,部分搜索引擎会直接忽略,所以不能完全指望它来控制服务器压力,还应该结合 CDN 或限流策略来减轻负载。
不同站点类型的 robots.txt 配置思路差异较大,以下几种常见的应用模式可以直接参考:
在实际配置过程中,很多细节容易被忽略,以下几条是值得重点留意的坑位:
配置完成后,不能凭感觉判断是否生效,需要通过多种方式核验:
不会直接触发惩罚机制,但可能导致重要页面长时间无法被抓取,间接影响收录速度和排名表现。只要及时修正并等待爬虫重新抓取,通常可以恢复正常。
没有顺序关系,解析时依据的是最长匹配原则,而不是规则出现的先后位置。所以关键是保证路径写得更具体、更精确,而不是调整排列顺序。
不会冲突。爬虫只匹配自己对应的那一组规则,不同组之间互不干扰。但当存在通配符组和具体爬虫组时,具体爬虫会更优先匹配自己的专属规则组。
robots.txt 虽然简单,但发挥的作用不可小视。建议你在配置后,先确认文件能被正常访问,再逐条检查规则的匹配预期,最后结合站长平台的检测工具做一轮验证。同时务必记住,它只是抓取管理工具,不是索引控制手段,也不是安全防线。合理规划抓取路径,把预算留给真正需要的内容,你的收录效率自然会得到提升。