先把当时的情况摆出来。站点早年用 /archives/123 的地址,改版换成 /post/slug 之后没有做映射。Ahrefs 里 9000 条外链仍指向旧路径,全部返回 404,这部分权重一分没进来。
原因不止一个,得分开看。改版只改了站内链接,没有导出旧地址做 301 映射。也可能是旧路径返回 404 页面还带全站导航,被当成软 404。
还有一种情况,外链集中在十几家论坛,更新时间超过两年,没人再回帖修正。另外,旧路径的 404 页没有返回 404 状态 爬虫一直当成有效页。
第一件事是导出旧路径的 404 清单
awk '$9==404 {print $7}' access.log | sort | uniq -c | sort -rn | head -30
然后按 ID 反查新地址并批量生成 301
SELECT ID, post_name FROM wp_posts WHERE post_type='post';
接着用规则把整段前缀重写到新路径
rewrite ^/archives/([0-9]+)/?$ /post/$1 permanent;
复查 301 落点是否 200
curl -sI https://www.example.com/archives/123 | head -5
别只看报错消失,验证要多做一步。映射上线后这批旧地址的 404 请求一周内归零,三个月内外链带来的落地页展示量涨了四成。
提醒一点。改版前把旧地址全量导出成映射表是最省事的做法,等外链丢了再补,成本和效果都不划算。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
