先把当时的情况摆出来。robots.txt 里写 Disallow: https://www.example.com/tmp/,蜘蛛照抓不误,tmp 目录下的备份文件被收进索引,换成路径写法之后才生效。

排查方向其实有限,先把可能性排一排。robots 的 Disallow 只接受路径,不接受完整 URL。还有一种是协议和域名部分被当成路径前缀,永远匹配不到。

另外,部分站长工具校验通过,实际蜘蛛会忽略整行。少数情况下是同一份文件里混用了完整地址和路径两种写法。

先确认规则的实际写法

curl -s https://www.example.com/robots.txt | Select-String Disallow

然后改成纯路径

Disallow: /tmp/

线上验证 tmp 目录的状态码

curl -s -o /dev/null -w "%{http_code}\n" https://www.example.com/tmp/backup.sql

敏感目录直接返回 404

location ^~ /tmp/ { return 404; }

中途换过一次思路,把范围缩到最小的那一层,反而快了。

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

怎么算真的好了,看的是同一批现象。tmp 目录的抓取量归零,索引里的相关条目两周内消失,直接访问该路径返回 404。

robots 里写域名是常见错误,规则永远只写以斜杠开头的路径。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189