这类问题我又碰上了一次。改版后文章从 /post/123 变成 /blog/标题,旧地址全部 404,外链带来的流量一周内掉光。

把日志和配置对完,能解释这个现象的基本就这几处。改版时没有为旧地址设计跳转规则;旧地址有大量外部链接,直接 404 等于放弃权重;新地址的层级更深,蜘蛛抓取路径变长。

上来先导出旧地址与新地址的对应关系

SELECT ID, post_name FROM wp_posts WHERE post_type='post';

接着按 ID 批量写 301 规则

rewrite ^/post/([0-9]+)$ /blog/$1 permanent;

等前面都确认过,再抽查跳转是否正确

curl -sI https://www.example.com/post/123 | grep -i location

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

恢复的判定其实很直接。旧地址全部一跳 301 到新地址,外链流量在两周内恢复,收录结构重建,旧地址不再返回 404。

提醒一点。不必保留静态副本,301 是更干净的做法,保留两份内容反而制造重复页面,还分散了内链权重。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189