在 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 时优先用纯英文注释,改完用抓取测试过一遍最稳。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
