在网站根目录中,robots.txt 是一个体积微小却牵动全局的文本文件。它通过几行指令为搜索引擎的抓取程序(爬虫)划出清晰的访问边界。配置得当,搜索引擎会将有限的抓取资源集中于核心内容,新页面的收录效率随之提升;反之,若语法或路径出现差错,可能导致整站权重下滑,甚至从搜索结果中消失。这篇文章将系统拆解其核心语法与高频陷阱,帮助你写出既安全又高效的配置文件。
robots.txt 本质上是给爬虫看的“访问指南”,并非强制性的安全屏障。在浏览器地址栏输入“域名/robots.txt”即可查看其内容。它的职责是告诉爬虫“哪些路径可以访问”,但至于页面是否被放入索引库,这份文件无权干涉。若希望某页面彻底从搜索结果中消失,应使用 noindex 元标签。
一个常见的认知误区在于,认为屏蔽了 robots.txt 就等于页面的内容被完全隐藏。实际上,若某个被屏蔽的页面拥有大量外部链接,搜索引擎可能基于这些外部信号仍将其收录,只是快照内容可能来自其他来源。需要特别注意的是,该协议依赖爬虫自愿遵守,多数主流搜索引擎的蜘蛛会遵循其规则,但恶意采集脚本往往无视此文件。因此,涉及用户隐私信息、后台管理面板或交易记录的目录,必须在 robots.txt 之外叠加登录认证、IP 白名单或防火墙等硬性防护措施。
一份有效的 robots.txt 文件由若干规则组构成,每个规则组必须以 User-agent 字段起始。所有字段采用“字段名: 值”的格式,冒号使用英文半角字符,规范写法中冒号后跟一个空格。尽管多数爬虫对格式容错性良好,但遵循规范书写能避免因语义歧义导致的解析异常。
该字段用于声明规则组所约束的爬虫类型。若仅针对谷歌搜索蜘蛛,可写为 User-agent: Googlebot;若希望所有搜索引擎的爬虫统一执行,则使用通配符 User-agent: *。你可以配置多个规则组,对不同爬虫施以差异化策略,例如对谷歌放宽访问限制,而对必应施以更严格的约束。
Disallow 用于声明禁止抓取的路径,Allow 则用于声明允许抓取的路径,二者常成对出现。一个关键细节是,当 Disallow 字段值留空(即 Disallow: 后无任何内容),代表清空所有限制,爬虫可抓取全站。当同一 URL 同时命中多条规则时,搜索引擎遵循“最长匹配优先”原则——路径匹配越具体,优先级别越高。例如同时存在 Disallow: /api/ 与 Allow: /api/public/,由于后者匹配的路径更长,因此 public 目录下的内容将被放行访问。
Sitemap 字段用于申明站点地图的完整 URL,帮助爬虫快速定位并获取全站内容列表,通常置于文件末尾。Crawl-delay 字段则用于设定爬虫连续抓取之间的等待时间,单位为秒。需特别留意,Google 的爬虫不认可该字段,其抓取频率的设置应在 Google Search Console 后台完成,而非依赖此文本指令。
首先,路径理解上的偏差是常见问题。Disallow 字段后面接的是站内根目录下的相对路径,而非完整域名的 URL。例如,Disallow: /docs/ 意味着禁止爬虫访问 域名/docs/ 路径下的所有内容,而非禁止包含“docs”字符串的任何链接。
其次,对通配符的误用也值得警惕。标准定义中,星号(*)代表匹配任意字符,例如 Disallow: /private* 可屏蔽所有以 private 开头的路径。但并非所有爬虫都稳定支持通配符,建议仅在针对谷歌爬虫时使用,其余场景以控制指令的确定性为先。最后是大小写问题,路径匹配是区分大小写的,Disallow: /Photo 与 Disallow: /photo 含义截然不同,在 Linux 服务器上尤为明显,配置时需与实际目录名保持严格一致。
配置文件中一个微小的笔误,足以造成严重后果。例如,意图屏蔽 /css 目录,却误写成 “Disallow: /css”(即路径后缺少斜杠),这可能导致 /css 目录下所有文件被禁,还可能波及所有以 “css” 开头的路径。更为严重的是,将 Disallow 字段的值误写成 “/”,会瞬间阻止爬虫抓取全站,让整站在搜索结果中的收录量骤降。为避免此类事故,强烈建议在修改后,前往各大搜索引擎的 Robots 测试工具中验证规则的实际效果,并观察过去一周的抓取统计是否正常。
另外,注意文件的可读性。多行规则可以用换行来区分,但每行之间不要有额外的逗号分隔。有经验的维护者会按爬虫、按目录分块整理,并适当添加注释行(以井号#开头),极大提升后期维护效率。
robots.txt 只负责阻止爬虫重新抓取,并不主动移除已收录的页面。页面从搜索结果中消失,通常需等待搜索引擎的缓存崩溃周期,一般在几周至数月不等。若要加急删除,可登录 Search Console 使用“移除网址”工具,并配合 noindex 标签实现快速下线。
可以,且这是标准写法。你可以在文件中分别建立多个规则组,每组通过不同的 User-agent 字段区分作用对象。例如,一组给 Googlebot 提供更宽泛的访问权限,另一组给 bingbot 设限。注意同一爬虫的规则组若重复出现,搜索引擎会合并解析,建议将同一爬虫的规则集中在一个组内书写。
不会直接导致降权,但会浪费抓取预算。如果大量无害内容被屏蔽,搜索引擎的爬虫会减少对站点的访问频率,从而降低有价值新内容的发现速度。建议明确业务边界:对确实无需抓取的资源目录(如图片附件、脚本文件夹)进行屏蔽,而内容页则应保持开放。
合理利用 robots.txt 是精细化流量管理的重要一环。建议在每次改动后做一次完整复核:先检查路径的大小写与结尾斜杠,再通过多爬虫测试工具确认匹配逻辑是否符合预期。如果你刚接触这一配置,从简单的规则小组入手,逐步扩展,切勿一次性堆放大量规则,这将是避免线上事故的最稳妥策略。