这个坑值得记一笔。改版做了 1.8 万条 301 映射,用 CSV 导入 Nginx 的 map。三个月后抓取错误里 2000 条显示「重定向到 404」,这些来源页本来有流量,现在一跳就断。
刚开始盯着「map 文件里有重复来源,后一条覆盖了正确映射」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。映射表由旧 sitemap 生成,目标路径按规则拼接,没有校验;目标文章在改版时被合并,ID 已经不存在;跳转用了相对路径,落在错误的目录下。
批量验证映射目标的状态码
awk '{print $2}' map.txt | while read t; do curl -s -o /dev/null -w '%{http_code} ' https://www.example.com$t; echo $t; done | sort | uniq -c | sort -rn | head
筛出目标为 404 的条目
grep '^404' target_check.txt | head -20
随后把失效目标改到栏目页
curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/category/seo/
剩下的就是重载 map 后抽 20 条复验
nginx -t && nginx -s reload
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
别只看报错消失,验证要多做一步。映射目标全部返回 200,抓取错误里的「重定向到 404」条目两周内清零。
提醒一点。301 表上线前必须跑一遍目标校验,靠人眼看 CSV 是看不出来的。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
