robots.txt是放在站点根目录下的一个纯文本文件,作用是告诉搜索引擎爬虫哪些页面可以抓取、哪些路径应当避开。配置合理,爬虫会把抓取预算集中在核心内容上,新页面收录速度也会更快;配置出错,则可能让整站抓取受限,甚至影响已有的搜索排名。理解它的语法和容易忽视的细节,是站点日常运维中很实用的一项技能。
robots.txt本质上是一份给爬虫看的协作说明,并不具备强制约束力。任何人打开浏览器,在地址栏输入“域名/robots.txt”就能看到文件内容。它更像园区门口的导览图,标明了哪些区域可以参观,但存放核心数据的机房,绝不能只依靠这张导览图来保障安全。
这份文件只影响爬虫是否发起抓取请求,并不直接决定页面能否进入索引。例如,某页面虽然被Disallow规则屏蔽,但站外存在大量外链指向它,搜索引擎仍有可能将其收录,只是展示的快照可能来自缓存或页面描述片段。
还需注意,这套协议全凭爬虫自觉执行。主流搜索引擎的蜘蛛通常会遵守规则,但不少第三方采集脚本和恶意爬虫根本不理会这些指令。凡是涉及用户隐私、管理后台、支付流程等敏感区域,务必同步启用登录验证、IP白名单或防火墙等硬性拦截措施,不要把安全期望寄托在这份协议上。
robots.txt由若干规则组构成,每个规则组以User-agent行开头,声明该组规则的适用对象。指令格式统一为“名称: 值”,冒号需使用英文半角,并在冒号后保留一个空格。多数爬虫对格式有一定容错度,但规范书写可以避免后续解析时出现意外。
这一行决定了当前规则组约束哪类爬虫。若只想针对谷歌蜘蛛,写User-agent: Googlebot;若希望所有搜索引擎统一适用,则用通配符User-agent: *。通过拆分成多个规则组,可以实现差异化策略,例如对谷歌放开权限,同时限制必应的抓取频率。
Disallow声明禁止访问的路径,Allow声明允许访问的路径,两者常配合使用。有个容易踩坑的细节:当Disallow后面留空时,表示清除全部限制,爬虫可以抓取全站。当一条URL同时命中多条规则时,搜索引擎普遍采用“最长匹配优先”原则——路径越具体,优先级越高。例如同时存在Disallow: /api/与Allow: /api/public/,后者匹配更长的路径,因此public子目录下的内容会被正常放行。
Sitemap指令用于声明站点地图的完整URL地址,帮助爬虫快速了解网站结构,通常放在文件末尾。Crawl-delay指令用于设定爬虫两次抓取之间的间隔秒数。需要特别留意:谷歌的蜘蛛不支持Crawl-delay,它的抓取频率由自身算法决定,设置该指令对其无效,期望值不要放在这上面。
语法本身并不复杂,但许多站点在细节上栽了跟头。以下三类错误尤其高发:
编辑完文件后,先检查格式是否合规,避免混用全角符号或遗漏换行。每个搜索引擎都提供了robots.txt测试工具,可以模拟爬虫请求并查看屏蔽结果,建议上线前逐一验证。
在维护层面,文件体积不宜过大,通常控制在500KB以内,行数过多会拖慢解析速度。定期巡检日志中的爬虫抓取记录,留意是否存在异常高频的抓取请求,这有助于及时调整规则。改动文件后,观察关键词排名和页面收录速度的变化,通常能判断配置是否达成了预期效果。
不会立刻降权。它主要影响爬虫的抓取行为,误配置可能导致页面长时间不被抓取、收录停滞,但并非直接惩罚。发现错误后及时修正,并推动爬虫重新抓取,通常就能逐步恢复。
不建议屏蔽CSS和JS文件。渲染页面时爬虫需要加载这些资源,若被屏蔽可能导致页面样式错乱、内容解析不完整,反倒影响收录效果。图片资源是否屏蔽取决于需求,若图片来源渠道复杂,可以单独设置规则。
并非完全一致。谷歌爬虫不支持Crawl-delay,对通配符的支持也有限;必应和百度在部分指令上存在差异。建议以主流搜索引擎的官方文档为准,配置完成后用各平台的测试工具分别做验证。
正确配置robots.txt,本质上是在为爬虫规划一张清晰的抓取地图。设定好规则后,用各平台的工具逐一测试,观察实际抓取日志,并定期复查是否有误配置或遗漏。把这份文件当作日常运维的一部分来对待,站点内容就能更顺畅地被搜索引擎发现和收录。