网站的robots.txt文件,直接关系着搜索引擎的抓取效率与内容收录节奏。这份文件虽然只是一个简单的文本,但写对了能引导蜘蛛高效抓取重要页面,写错了却可能让整站陷入抓取异常。要真正用好它,得先理解其本质,再掌握语法细节,最后避开常见误区。
robots.txt定义的是给爬虫看的“行为建议”,而非法定强制规则。它不负责加密数据,也不保护任何敏感页面。任何访问者都能在浏览器直接输入你的域名加“/robots.txt”看到全部内容,无法隐藏任何信息。
这份文件指挥的只是“是否发起抓取”。至于页面最终是否进索引、排名如何,不归它管。如果一个被屏蔽的页面仍然有大量外部链接指向,搜索引擎完全可能把它纳入索引,只是展示的快照可能来自缓存文本。这种“抓取屏蔽”与“索引收录”脱节的机制,是运营中最大的认知分水岭。
同时要记住,这一协议全凭爬虫自觉。主流搜索引擎的蜘蛛通常执行得不错,但大量第三方采集器完全不理会。涉及用户数据、支付回调、后台管理等功能时,务必叠加登录验证、IP白名单或防火墙等手段,不要只依赖这份文件做安全防线。
robots.txt文件本身就是一个纯文本,由若干条规则组成。所有指令统一采用“名称: 值”的格式,冒号务必使用英文半角,并建议在冒号后面保留一个空格。关键词大小写不敏感,但路径是区分大小写的,这点尤其容易出错。
每一组规则必须以User-agent开头,声明这条规则约束的对象。只针对谷歌蜘蛛可用User-agent: Googlebot;希望所有爬虫统一对待则用通配符User-agent: *。一个文件中允许存在多个规则组,可以为不同搜索引擎定制不同策略。比如对谷歌放开图片抓取,同时给必应限制更严的频率。
Disallow声明禁止访问的路径,Allow声明允许访问的路径,二者经常配合。当Disallow后面什么都不填,表示清除全部限制。需要特别注意的是路径匹配规则:多数搜索引擎采用“最长匹配优先”原则,即哪一条规则描述得越详细,谁的优先级就越高。例如同时存在Disallow: /api/和Allow: /api/public/,因为后者匹配了更长的路径,所以public目录能够正常放行。合理利用这一机制,可以先设置整体屏蔽,再精准开放某个子目录。
Sitemap指令用来指明站点地图的完整地址,放在文件末尾即可。Crawl-delay用来声明爬虫两次请求之间的间隔秒数,但谷歌蜘蛛不认这条指令,其抓取节奏只能通过站长后台的速率设置来调整。
同样的语法,在不同场景下会呈现完全相反的结果,这些经验教训值得记录。
在没有现成模板的情况下,按下面步骤操作最为稳妥。
配置过程中,注意保持每条规则独立成行,不留无意义的空行和注释,避免产生歧义。
即使配置完全正确,仍然有一些意外状况会消耗抓取配额。最常见的莫过于参数地址无限生成,比如同一个页面携带不同的追踪参数或排序参数,会迅速占用大量的蜘蛛请求额度。此时可以考虑用Disallow规则屏蔽这类带参数的URL,但务必与allow规则精细配合,以免误伤正常页面。
另一类困境是动态目录的错误配置。如果站点用重写规则生成多层级路径,但robots中的屏蔽规则写得太宽,可能连带屏蔽了首页之外的所有页面。这种问题不会立刻暴露,往往等到收录量骤减才被发现。因此,每次修改后都要对比修改前后的百度搜索资源平台或Google Search Console抓取统计,观察是否有异常波动。
不能。它只是控制爬虫是否发起抓取请求。如果页面通过其他方式被获取(比如外部链接众多或有人使用抓取工具),内容依然可能被收录,只是展示的快照可能来自缓存。真正想要禁止收录,应使用noindex标签。
取决于匹配长度。规则越长越具体,优先级越高。比如先写Disallow: /api/,再写Allow: /api/public/,public子目录会被放行。如果两条规则的匹配长度一致,则先出现的规则生效。
需要。路径变动后应立即同步更新块规则,否则可能导致爬虫继续访问已经失效的路径。建议每次改版后在爬虫统计工具里检查一次抓取error,及时清理过时规则。
robots.txt是一个操作门槛低、但细节极多的配置文件。只需要记住三条核心建议:基于具体路径做屏蔽,优先放行静态资源,并定期用平台工具验证效果。每次修改后养成检查抓取统计的习惯,就能让这份文件真正服务于站点的内容分发效率。