报错是这么冒出来的。在 User-agent: * 和 Disallow 之间空了一行,之后写的规则全部没生效,抓取日志里被挡的目录照样被抓,怎么也找不到原因。

把日志和配置对完,能解释这个现象的基本就这几处。解析器把空行视为当前分组的结束标志。另一种情况是空行后的 Disallow 变成无归属的孤立指令被丢弃。

不容易想到的是,不同引擎对空行的处理细节略有差异,表现不一致。

上来先用行号查看分组结构

grep -n -A5 'User-agent' robots.txt

随后删掉分组内的空行

awk 'NF' robots.txt > robots.new

末了重新请求核对行数与内容

curl -s https://www.example.com/robots.txt | wc -l

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。分组内规则连续,测试工具显示目标目录已被屏蔽,日志里相应请求归零。

注释行同样会打断部分老解析器,稳妥写法是每条规则单独一行,行内不要加注释。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189