用记事本改过 robots.txt,文件开头多了 EF BB BF,Search Console 提示第一行无法解析,Disallow 规则整份失效,后台地址一天被蜘蛛抓了两万次。

把日志和配置对完,能解释这个现象的基本就这几处。UTF-8 BOM 被当成 User-agent 的一部分,第一组规则整体失效;编辑器保存时默认带 BOM,FTP 上传后没人检查字节;部分 CDN 会在文件头插入 BOM;校验只看文本内容不看字节,肉眼看不出差异。

先看文件头三个字节

Format-Hex -Path robots.txt -Count 3

去掉 BOM 后重新上传

$c = Get-Content robots.txt -Raw; [IO.File]::WriteAllText('robots.txt', $c, (New-Object Text.UTF8Encoding $false))

线上确认首行没有被污染

curl -s https://www.example.com/robots.txt | Select-Object -First 1

末了重新提交并观察抓取

curl -s https://www.example.com/sitemap_index.xml -o /dev/null -w "%{http_code}"

当时还开着另一个排查窗口,两边日志对照着看才定位到。

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

改完先别撤,确认这几项。首行是干净的 User-agent: *,GSC 的 robots 测试显示规则被正确读取,后台路径不再被大量抓取。

补一句。robots.txt 必须是纯 UTF-8 无 BOM,用 Windows 记事本改完一定要查文件头。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189