这个坑值得记一笔。图片放在 /Images/ 目录,robots 写的是 Disallow: /images/,日志里该目录每天仍被抓八千次,Linux 文件系统区分大小写,规则完全没命中。
刚开始盯着「迁移时改过目录名,规则没跟着改」,折腾了半个多小时,排掉了。
原因不止一个,得分开看。robots 的路径匹配区分大小写,大小写不同就是两条规则;站点混用 /Images/ 和 /images/ 两套目录;CDN 缓存了旧路径,请求实际落在另一个目录。
动手时先确认两个目录的实际状态码
curl -s https://www.example.com/Images/ -o /dev/null -w "%{http_code}\n"; curl -s https://www.example.com/images/ -o /dev/null -w "%{http_code}\n"
两条大小写规则都写上
Disallow: /Images/
Disallow: /images/
随后统计各目录被抓次数
awk '{print $7}' access.log | Select-String "^/(Images|images)/" | Group-Object | Sort-Object Count -Descending
迁移后的旧目录做 301
location /Images/ { return 301 /images/; }
同事提醒我看一下最近一次发布,时间点确实对得上。
别只看报错消失,验证要多做一步。两个目录的抓取量都降到每天百次以内,图片搜索的展现没有同步下滑。
路径大小写在 Linux 上就是两个目录,写规则前先确认真实目录名。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
