robots.txt 文件如同一份给搜索引擎爬虫的访问须知,合理的规则能引导爬虫高效索引重点内容,同时避免后台数据与无效页面被收录。然而,配置若不规范,可能出现规则静默失效,甚至误拦全站的情况。要熟练掌控这份文件,需要从它的存放位置、语法细节到优先级逻辑逐一梳理。
爬虫对 robots.txt 的查找路径有明确的固定标准。文件名称必须是全小写的 robots.txt,且只能存放在域名的根目录下,即通过 https://你的域名.com/robots.txt 这个地址直接访问。若文件名含大写字母,例如 Robots.txt,或文件被放入子文件夹,爬虫会将其视作不存在,此时默认规则为允许抓取所有内容,此前设置的封锁指令将全部失效。
文件内部以“组”为基本单位,每组由 User-agent 声明起始,其后跟随若干规则行。为便于阅读,不同组之间建议用空行分隔。需要注意,字段名(如 User-agent)不区分大小写,但规则中的路径参数是严格区分大小写的,书写时应保持前后一致。
井号 # 用于添加注释,可放在行首或规则末尾。注释仅作说明用途,不影响任何指令的执行结果,便于团队协作时理解配置意图。
User-agent、Disallow 与 Allow 是构成 robots.txt 规则的三要素。User-agent 用于指定规则适用的爬虫,Disallow 声明禁止访问的路径,Allow 则用于在 Disallow 限定的范围内,精准豁免特定地址。
禁止所有爬虫抓取全站,可写成:
User-agent: *
Disallow: /
仅限制后台管理目录的写法为:
User-agent: *
Disallow: /admin/
此处极易出现误区:Disallow 值末尾的斜杠是否添加,影响范围大不相同。写成 /admin/ 仅对 admin 目录下的内容生效;若写成 /admin,则所有以 admin 开头的 URL 都会被屏蔽,例如 /administrator 或 /admin-panel,这些路径若属于前台功能,可能造成意外误伤。
默认建议在路径末尾补上斜杠以表示目录,除非确实需要屏蔽某一特定前缀开头的全部链接,此时才可省略斜杠。
当某个路径同时被 Disallow 与 Allow 规则覆盖时,生效规则并非取决于书写顺序。其判定逻辑是:若两条规则的字符长度相等,则 Allow 指令拥有更高优先级;若长度不等,则路径更长、描述更具体的那条规则优先执行。
例如,屏蔽整个博客栏目,但单独放行其中一篇专题文章,可配置为:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
上述配置完成后,专题文章可正常被搜索引擎收录,而博客栏目内其他内容仍处于屏蔽状态。动手配置前,建议先梳理一张需要限制的路径清单,逐一推演路径之间的覆盖关系,确保规则不互相冲突。
除了语法层面的问题,实际运营中还常出现一些隐蔽性较强的失误。比如规则本身没问题,但服务器返回了错误的 HTTP 状态码,爬虫无法正确读取文件内容;又或者文件内同时声明了多条指向同一路径的冲突规则,导致解析结果超出预期。
以下几种情形值得重点关注:
上线前可利用各大搜索引擎站长平台提供的 robots 测试工具进行模拟验证,能直观看到每条规则的实际匹配效果。
没有统一的时间标准。爬虫再次抓取该文件时便会读取最新内容,时间间隔可能从几小时到几天不等。若需加快生效速度,可在搜索引擎站长工具中主动提交更新后的 robots.txt 链接,或使用其中的抓取测试功能触发一次快速访问。
不能。robots.txt 的作用是阻止爬虫抓取,但若页面已被其他外部链接指向,搜索引擎仍可能将其索引(仅不显示抓取到的内容)。要彻底阻止收录,应使用 noindex 标签(需确保页面可被正常抓取)或通过密码保护来限制访问。
对于同一个域名(含协议与端口),只允许存在一个 robots.txt 文件。多个文件或不同目录下的同名文件均不会被识别。若站点有多个子域名,每个子域名需各自独立放置一份文件,互不影响。
正确配置 robots.txt 的关键在于理解路径匹配的精确性与优先级规则。建议从最小化的封锁范围开始设置,利用搜索引擎官方的检测工具逐一验证每一条规则的匹配结果,并在修改后观察站点日志中爬虫的实际抓取记录。若规则长期未生效,应优先检查文件的可访问状态与语法格式,而非反复调整规则内容本身。