手写 robots.txt 时在冒号后加了两个空格,Disallow: /tmp/ 这行看着完全正常,临时目录却一直被收录,日志里还有抓取记录。
把日志和配置对完,能解释这个现象的基本就这几处。部分解析器对冒号后的空格容忍度不同,多余空格会进入路径;路径被解析成带前导空格的字符串,永远匹配不上真实地址;文件用 Windows 换行保存,行尾多出回车符。
先用十六进制看行尾和空格字符
grep -n 'Disallow' robots.txt | cat -A
然后统一去掉冒号后的多余空格并转成 LF
sed -i 's/Disallow: */Disallow: /' robots.txt
末了重新请求确认内容已经干净
curl -s https://www.example.com/robots.txt | cat -A | head
中途换过一次思路,把范围缩到最小的那一层,反而快了。
别只看报错消失,验证要多做一步。抓取诊断里临时目录不再被抓,日志中对应路径的请求归零,收录数量在下次更新后回落。
用编辑器保存时容易混入 BOM,robots.txt 第一行带 BOM 会导致整个 User-agent 组失效,比空格更隐蔽。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。