想屏蔽站内所有 PDF,写了 Disallow: /*.pdf$,结果 PDF 照样被收录,日志里也还有抓取记录,规则像是没起作用。
真正麻烦的地方在于,几个原因的现象几乎一样。不同引擎对 * 和 $ 的支持程度不一样,老版本解析器直接忽略整行。另一种情况是规则写在了错误的 UA 分组,目标蜘蛛根本没读到。
另外,PDF 地址带查询参数,$ 锚定后匹配不上。
动手时先确认目标蜘蛛是否支持通配符
curl -s https://www.example.com/robots.txt
退化成目录前缀写法更稳
Disallow: /uploads/pdf/
等前面都确认过,再观察日志确认 PDF 抓取是否停止
grep -ci '\.pdf' access.log
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
恢复的判定其实很直接。日志里 PDF 的抓取请求明显减少直到归零,收录量在下次数据更新后回落。
补一句。屏蔽 PDF 会同时丢掉里面的内容流量,先确认这些文件确实没有搜索价值再动手,否则得不偿失。报错文案容易误导,真正的原因往往在相邻那一层的日志里。