在 robots 里加了一行中文注释说明屏蔽原因,保存时编辑器用了 GBK,之后整份文件里有几条规则不再生效。

原因不止一个,得分开看。robots 规范只认 UTF-8,GBK 编码的中文字节会被当成非法字符;非法字符导致解析器跳过整行,连带后面的规则一起丢;注释写在规则同一行末尾,被当成规则的一部分;文件头带了 BOM,第一行 User-agent 直接失效。

动手时先检查文件的编码和字节

file -i /www/wwwroot/lu0.cn/robots.txt

去掉 BOM 并转成 UTF-8

sed -i '1s/^\xEF\xBB\xBF//' robots.txt && iconv -f GBK -t UTF-8 robots.txt -o robots.txt

再往下把注释单独放一行并只用 ASCII

# block pdf download

等前面都确认过,再重新抓取确认规则被读到

curl -s https://www.example.com/robots.txt | head -10

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

恢复的判定其实很直接。文件编码显示 utf-8 且首行是 User-agent,抓取测试里规则被正确解析,被屏蔽目录的抓取量按预期下降。

注释看着无害,编码一错整行就废,写 robots 时优先用纯英文注释,改完用抓取测试过一遍最稳。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189