站点从 /blog/文章名 改成 /文章名,301 规则只写了外链入口,站内模板里的旧地址没动,蜘蛛顺着正文内链一路撞 404,两天报了四千条。

原因不止一个,得分开看。改版只处理了 URL 规则,没有同步替换数据库里的内链;主题的固定链接设置改了,旧文章正文里的绝对地址还是旧的;缓存插件里存着改版前的页面副本。

上来先统计正文里的旧前缀数量

SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%/blog/%';

批量替换正文内链

UPDATE wp_posts SET post_content = REPLACE(post_content, '/blog/', '/') WHERE post_status = 'publish';

接着清掉页面缓存

curl -X PURGE https://www.example.com/p/1024

等前面都确认过,再抽查内链是否还有旧地址

curl -s https://www.example.com/p/1024 | grep -c '/blog/'

命令输出我都留了记录,免得改完记不清原来的值。

改完先别撤,确认这几项。替换后正文里的旧地址归零,404 报错在一周内回落到日常水平,栏目页权重开始正常传递。

这里还有个坑。改固定链接一定要连数据库正文一起改,光写 301 只能救外链,救不了站内自己指错的路。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189