wp rewrite flush --hard
wp option get rewrite_rules | head -c 300
curl -sI https://example.com/guide/hello/ | head -3

把固定链接从 /%postname%/ 改成 /%category%/%postname%/,前台内页立刻全 404,后台设置页还显示新结构,保存两次也不见好。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:WordPress 只在设置页保存时标记 rewrite_rules 需要重建,规则本身存在 options 表里,用命令行或直接改库都不会触发刷新。旧规则里没有新的分类段,请求落不到任何一条上,只能返回 404。

围绕「rewrite_rules 未刷新」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:打开设置里的固定链接页,什么都不改直接点保存,让 rewrite_rules 重新生成;用命令行执行 wp rewrite flush --hard,把 .htaccess 里的规则也一起重写;清掉对象缓存和 CDN 上的 HTML 缓存,再开一个无痕窗口验证内页;装了多站点的话每个子站都要各自刷新一次,主站刷新不会带上子站。

确认没问题再收工,无痕窗口打开任意一篇旧文章返回 200,后台固定链接页不再提示需要更新。

作者 9823189