先看现象。死链报告里有一批地址返回 301,看着是正常跳转,跟过去发现目标页早就删了,最终落点是 404,权重在这一跳上直接断掉。

把日志和配置对完,能解释这个现象的基本就这几处。改版时只做了旧地址到中间地址的映射,第二跳没维护。少数情况下是目标页被下线后没有同步清理来源规则。

另外,跳转规则里写的是栏目路径,栏目本身已经不存在。

少数情况下是CDN 缓存了那条 301,源站改了规则边缘还在返回旧跳转。

跟随一次完整跳转链

curl -sIL https://www.example.com/old/1.html | grep -Ei 'HTTP/|location'

批量检查跳转终点的状态码

while read u; do echo -n "$u "; curl -o /dev/null -s -w '%{http_code}\n' -L $u; done < urls.txt | grep ' 404$'

随后把规则直接指向现存页面

rewrite ^/old/(.*)$ /new/$1 permanent;

末了清理边缘节点上的旧跳转缓存

curl -X PURGE https://www.example.com/old/1.html

怎么算真的好了,看的是同一批现象。所有 301 的终点都返回 200,死链报告里的这类条目清零,相关页面的排名逐步恢复。

301 本身不是终点,落地页必须能打开,改版后的跳转表要定期跑一遍终点检查。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189