这个坑值得记一笔。改版做了 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 是看不出来的。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189