报错是这么冒出来的。栏目从 /tech/seo/post/ 压成 /seo/post/,只给栏目首页写了 301,站内两千多条旧内链仍指向三级路径,蜘蛛抓到全是 404,新目录收录停滞。

排查方向其实有限,先把可能性排一排。301 只覆盖栏目入口,文章级路径没有映射。另一种情况是数据库里的内链仍是旧地址,没有批量替换。

少数情况下是sitemap 同时输出新旧两套地址。

第一件事是抽样看旧地址的返回

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/tech/seo/post-1/

再往下确认跳转落点是否正确

curl -sI https://www.example.com/tech/seo/post-1/ | grep -i location

剩下的就是统计正文里的旧路径

mysql -e "SELECT COUNT(*) FROM db.wp_posts WHERE post_content LIKE '%/tech/seo/%';"

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

这台环境是别人交接的,不少默认值被动过,只能一项项核。

恢复的判定其实很直接。补齐规则并替换内链后,旧地址全部一跳到位,新目录的收录两周内恢复正常。

提醒一点。改目录要在同一批变更里做完规则、内链、sitemap 三件事,漏一件就会留下大量 404。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189