robots.txt是网站根目录下一个不起眼的纯文本文件,却掌管着搜索引擎爬虫的访问边界。设置得当,它能让蜘蛛专注抓取核心页面、减少无效请求;一旦写错,可能拖累收录效率,甚至让整站从搜索结果中消失。这篇文章帮你理清规则本质,避开那些高频出现的配置误区。
这个文件本质上是站主写给爬虫的一份“访问协议”,声明哪些地址欢迎抓取、哪些建议绕行。百度、Google等主流搜索引擎都会识别并遵守其中的指令,但它是合作契约而非强制法令——恶意爬虫完全可以无视规则。
实际工作中,它最擅长处理三类需求:一是隔离开后台、临时目录等不需要进索引的区域;二是忽略带大量排序、筛选参数的动态URL,防止网站配额被相似页面耗尽;三是在文件里声明Sitemap的完整地址,引导爬虫更快发现新内容。
必须牢记,robots.txt对任何访客都是透明公开的,浏览器里直接输入文件路径就能查看。所以保护登录凭证、用户数据这类敏感信息绝不能指望它,这些必须靠权限验证、IP白名单或服务端加密等手段兜底,否则等于把门锁摆在了明面上。
robots.txt的格式非常直白,基本结构就是“字段: 值”。字段名不分大小写,但路径部分严格区分大小写。把下面六个关键字段吃透,绝大部分配置场景都能应对。
假设你的站点有个内部目录 /admin/,其中一份对外说明文档需要被检索,同时还希望告诉蜘蛛Sitemap的位置。规则可以这样写:
User-agent: *
Disallow: /admin/
Allow: /admin/notice.pdf
Sitemap: https://www.example.com/sitemap.xml
这段指令的含义很透明:所有爬虫禁止进入admin目录,但其中那份notice.pdf文件是例外,可以抓取;同时站点地图的地址也一并告知了。若把Allow行去掉,则整个admin目录都会被设为禁区;而把Disallow值改为“/”则需要极其慎重,因为那相当于关上了整站的索引大门。
规则的匹配遵循“从文件顶部逐条向下读取”的逻辑,每条规则按对应爬虫分开处理。最关键的是:对同一路径而言,Allow的优先权高于Disallow,只要匹配成功并放行,就不会再被后期更长的禁止规则拦截。
此外,路径匹配是基于前缀的,不是精确等于。如果你写了Disallow: /help,那么/helpful这类以help开头的地址同样会被挡住,因为前缀匹配不关心后面的字符。因此建议在路径末尾加斜杠(比如写成/help/)来缩小屏蔽范围,除非你确实想屏蔽整类URL。
写规则时还有几个易错点值得留意:第一,空白的Disallow值(比如Disallow:)表示允许抓取,与不写是等价的;第二,注释行以井号(#)开头,拆行时注意不要插在字段名中间;第三,每个字段独占一行,用空格分隔会破坏语法。
下面几类问题在实际站点中反复出现,值得逐个对照自查。
有些站主把Disallow: /images/写成Disallow: \images\,反斜杠在多数爬虫眼里不被识别,规则直接失效。路径永远使用正斜杠,并且以根目录起始的绝对路径来写。
为了节省配额,有人会把整个静态资源目录拦掉,但这会让搜索引擎无法渲染页面、评估移动端可用性,反而拖低排名。正确做法是只屏蔽不必要的脚本,保留CSS、JS和图片文件的可访问性。
路径匹配区分大小写,/Product/与/product/属于两个完全不同的地址。若你的站点大小写混用,需要逐一核对生效规则,避免想放行的页面被误伤。
不一定立刻,但风险很高。如果把Disallow写成“/”,绝大多数搜索引擎会在下一次抓取时停止收录新页面,已索引页面也可能在数周后逐步被移除。发现错误后尽快修正并提交重新抓取,通常可以挽回。
不是必须,但强烈建议写上。虽然在Search Console等工具里可以单独提交Sitemap,但在robots.txt里声明能让任何爬虫在第一时间发现站点地图地址,尤其对刚上线的新站或收录不稳定的站点很有帮助。
有差异。比如Crawl-delay在Googlebot中已经被忽略,而Baiduspider则可能参考该值;Host字段也只是部分引擎才认识。配置时优先保证Disallow和Allow正确,其他字段作为增强手段即可。
robots.txt虽小,作用不容忽视。动手配置前先想清楚目标:哪些路径必须屏蔽、哪些要放行、Sitemap是否声明;随后用小范围规则逐步验证,再推广到全站。日常维护中定期检查文件是否被误改、路径是否过期,并留意搜索引擎抓取报告,就能让这份协议持续为收录效率服务。