robots.txt是网站根目录下一个纯文本文件,用来指引搜索引擎爬虫哪些路径可以访问、哪些路径应该跳过。设置合理,爬虫能更高效地抓取核心内容,新页面收录速度也会提升;设置失误,可能导致整个网站抓取受限,波及已有的搜索排名。理解它的语法细节,同时避开那些常见误区,是网站管理者必须掌握的基础技能。
robots.txt本质上是一份递给爬虫的书面约定,它没有强制执行能力,访客完全可以在浏览器地址栏直接输入"域名/robots.txt"查看全部内容。这就好比办公楼入口处的指引牌,标明哪些楼层开放参观,但存放核心账目的财务室,不可能只靠一张告示来保障安全。
这份文件管理的仅仅是爬虫是否发起抓取动作,并不直接管控页面是否进入索引库。举个例子,某个URL被Disallow规则屏蔽后,如果外部有大量高质量链接指向它,搜索引擎仍然有可能将其收录,只是展示的摘要信息可能来自网页缓存。
更要明确的是,这套规则依赖爬虫的自愿遵守。主流搜索引擎的蜘蛛通常会严格遵循,但各类第三方采集程序、恶意爬虫对此视而不见。涉及用户隐私、后台管理、支付接口等敏感区域,必须同步加上登录校验、IP限制或应用防火墙等硬性手段,不能把安全保障寄托在这份协议上。
robots.txt由多个规则块组成,每个块以User-agent行开始,确定该部分规则的适用对象。指令的书写格式是"名称: 值",冒号使用英文半角符号,冒号后通常保留一个空格。虽然多数爬虫对格式有包容度,但规范书写总能减少解析层面的意外。
这行指令决定当前规则块约束哪类爬虫。若只针对谷歌蜘蛛,就写User-agent: Googlebot;若希望所有搜索引擎统一执行,则用通配符写法User-agent: *。通过划分多个规则块,可以实现灵活的差异策略,比如对谷歌完全开放,同时限制必应对某些目录的访问。
Disallow声明禁止访问的路径,Allow声明允许访问的路径,两者通常配合使用。一个容易踩坑的细节是:当Disallow后面为空时,表示撤销全部限制,爬虫可访问全站内容。当某条URL同时匹配多个指令时,搜索引擎通用的规则是"最长匹配优先"——路径越精确,权限越高。例如同时存在Disallow: /download/与Allow: /download/public/,后者匹配的路径更长,因此public子目录会被放行。
Sitemap指令用于表明网站地图的完整地址,帮爬虫快速掌握站点架构,通常放在文件底部。Crawl-delay指令用来设定爬虫两次请求之间的等待秒数。不过要特别留意:谷歌蜘蛛不支持Crawl-delay参数,其抓取节奏由自身算法控制,设置该项对谷歌无效,若依赖此参数控制谷歌负载可能会失望。
语法规则本身不复杂,但不少站点在细节处栽了跟头。以下几类问题在实操中尤为常见:
编写robots.txt不宜追求大而全,而应遵循清晰、克制的原则,把精力花在关键路径的把控上。推荐的稳妥流程如下:
值得注意的是,robots.txt不应包含私密文件路径,因为这份文件对所有访客可见,等于主动暴露了敏感目录的存在。此外,若网站近期着力于新内容收录,务必检查Sitemap声明是否完整、路径是否正确,避免因路径拼写错误导致地图失效。
不能。robots.txt只影响未来的抓取行为,对已经收录的页面没有直接的移除作用。若要快速删除索引中的具体页面,应使用更为直接的移除请求机制,按相关工具提示操作即可;robots.txt调整后,需要等待爬虫下次抓取时重新评估。
不可以。每个站点(含子域名)的根目录只能有一个有效的robots.txt文件。若需针对不同子目录设定不同规则,在同一个文件内通过多个User-agent规则块即可实现,无需也不应拆分成多个文件。
本质上没有差别,两者都意味着对所有爬虫完全开放抓取。但文件存在时返回200状态码,不存在时返回404状态码。个别爬虫的日志记录方式不同,可能导致排查时产生困惑,其余并无实质区别。
robots.txt是一份轻量却关键的运营工具,正确的姿势是把它当成流量引导方案,而不是安全隔离手段。配置时优先保证核心内容通路顺畅,避开大小写、匹配顺序等高频雷区,并借助官方工具验证后再上线。定期梳理规则,删除冗余条目,让这份文件始终简洁、有效,才能为网站的长期收录表现提供稳定支撑。