robots.txt 是网站根目录下一个普通的文本文件,它专门用来和搜索引擎爬虫打交道,告诉它们站内哪些内容可以来抓取,哪些地方不能靠近。这个文件虽然看起来不起眼,但配置错了后果却很直接:要么新发布的内容迟迟得不到收录,要么后台地址、测试环境这些本应保密的区域被爬虫一路扫过去。理解它的语法逻辑,掌握常见的配置场景和易错环节,是每位站点管理员都应具备的基本功。
这个文件的内在结构并不复杂,核心是由一个个独立的规则块组成的。每个规则块的起点是 User-agent 指令,用来指向该规则所要约束的爬虫对象,随后配合 Disallow 或 Allow 来限定路径的访问权。比如下面这段写法:
User-agent: *
Disallow: /admin/
这句的意思就是说,任何爬虫都不允许进入 /admin/ 目录下去抓取内容。这里有两个细节特别值得留意:
不同的网站阶段,对应的文件写法也有所差异。以下三种场景基本覆盖了日常运维里最常遇到的配置需求。
在网站开发中或正在改版期间,我们往往希望暂时切断所有爬虫的访问,这时可以用:
User-agent: *
Disallow: /
注意,这里的斜杠指向的是站点根目录,它的意思就是全站禁抓。但假如写成 Disallow:,即冒号后面留空,那含义则完全相反:它是在向爬虫释放信号,表示所有路径都欢迎抓取。仅仅一个斜杠的差异,会导致两种截然不同的结果。很多站点上线后收录量异常,费了半天劲排查,最终发现问题就出在这一行上面。每次修改完之后,建议借助抓取测试工具,专门核对一下这两种写法的差异。
打个比方,你不想让爬虫抓取 /private/ 目录下的内容,但其中 /private/demo/ 里的示例页面你却希望被索引。只用一条 Disallow 是做不到的,这时候必须显式增加一条 Allow 指令:
User-agent: *
Disallow: /private/
Allow: /private/demo/
爬虫在理解这些规则时,遵循的是"最长匹配优先"原则,也就是说,描述得越具体的那条规则,优先级高于笼统的那条。如果漏掉末尾的 Allow 行,demo 子目录就会随父目录一起被拦在门外。有一个很直接的判断标准可以帮你确认是否需要补 Allow:凡是需要从禁止范围里"突围"出去的路径,都应当单独为它写一条放行规则,否则就保持禁止。
Googlebot 和 Bingbot 对常见指令的解读基本一致,但有一些小众的爬虫并不认同 Allow 指令的写法。一个稳妥的组合是:先用 User-agent: * 设置一套适用于所有爬虫的兜底规则,再按业务需要为特定爬虫单独配置规则块。这里要特别提醒:请勿在同一份文件里针对同一爬虫重复声明规则块,后出现的块会覆盖先前配置,导致前文写的规则失效,容易引起逻辑混乱。
除了语法本身,书写格式上也有不少值得留神的地方。文件里的每一条指令都应当独立占一行,规则块与规则块之间留一个空行隔开,便于爬虫区分界限。允许用 # 号加注释文字,方便日后自己回顾和维护,但要确认注释落在单独的某一行上,不要跟在指令后面混写。
还有一点常常被忽视:如果你所用的爬虫并不识别文件里写的某个指令,它会选择忽略它,而不是报错。这意味着,一份看似写了很多内容的 robots.txt,实际生效可能只有其中几行。最好对照常用爬虫的官方文档,确认你使用的每个指令都有实际意义。
另外,不要试图在 robots.txt 里禁止目录里某个带参数后缀的地址,比如问号后的参数值。这类动态地址的匹配写法与普通路径不同,生搬硬套往往不生效,还会额外增加爬虫的负担。
写完不是终点,验证才能确保万无一失。建议的流程如下:
常见的误区是,很多人在文件里写了 Allow: / 就以为万事大吉,却忽略了它只属于某一个特定爬虫的规则块,其他爬虫可能并不受这条规则约束。如果你想让所有爬虫都能访问,应在 User-agent: * 下声明相应的规则。
可以,但必须确保文件保存时的编码格式是 UTF-8。有些老旧环境默认使用 GBK 编码,会造成注释乱码。更稳妥的做法是尽量避免使用中文,统一用英文注释,减少因编码带来的解析风险。
要看情况。如果旧路径已经不存在了,留着那行 Disallow 并不影响新站点的抓取,只是显得冗余,可以清理。但如果旧路径还挂着301重定向,建议保留规则一段时间,等搜索引擎完成内容更新后再移除,避免在这期间出现抓取缝隙。
爬虫不会每次都重新读取这个文件,通常会有一定的缓存时间。你修改后,一般情况下半天到几天内会见效,具体取决于搜索引擎的抓取频率。想加快生效进度,可以在站长平台提交一下文件更新的请求,有助于缩短等待周期。
robots.txt 看似短小,却承载着整站抓取入口的管理责任。从理解 User-agent 与 Disallow、Allow 的组合逻辑,到区分全站屏蔽与完全放行的微妙差别,每一步都值得谨慎对待。建议你养成为每个规则块做注释的习惯,并定期使用站长工具的测试功能复检一遍规则,确保没有遗漏。配置完成后,别忘记检查一下文件是否能正常访问,以及特殊路径是否被误伤。做到这些,站点就能在搜索引擎面前保持清晰有序的访问边界。