WordPress 本地环境 REST API 404 问题排查记录
一、问题背景
在本地 WordPress 开发环境(localhost:2234)中进行页面编辑操作时,浏览器控制台出现如下报错:
1 | POST http://localhost:2234/wp-json/wp/v2/pages/5?_locale=user 404 (Not Found) |
该报错来源于 WordPress 后台编辑页面(Gutenberg 编辑器)在保存页面内容时,通过 REST API 向 /wp-json/wp/v2/pages/{id} 发送 POST 请求,但服务器返回了 404。
直观表现为:
- 页面无法正常保存或更新
- 后台无明显 PHP 报错
- 前端页面访问可能正常
二、问题初步分析
WordPress 的 REST API 强依赖于 重写规则(Rewrite Rules)。/wp-json/ 本质上并不是一个真实存在的目录,而是通过固定链接规则映射到 WordPress 内部路由。
出现 REST API 404,通常说明:
- 固定链接重写规则未正确生成或失效
- Web Server(Apache / Nginx)未正确加载最新 rewrite 规则
- 本地环境端口、虚拟主机或伪静态配置异常
但在本次问题中:
- 站点可正常访问
/wp-admin/可正常登录- 仅 REST API 路径返回 404
说明问题更偏向 WordPress 内部重写规则状态异常。
三、最终解决方案
实际解决方式非常简单:
后台 → 设置 → 固定链接 → 不修改任何内容 → 直接点击「保存更改」
保存完成后:
- REST API 接口立即恢复正常
- 页面可以正常保存
- 控制台 404 报错消失
四、原理说明(为什么“保存一次固定链接”就能修复)
当你点击「保存固定链接」时,WordPress 会执行以下关键操作:
- 重新生成 Rewrite Rules
- 将最新规则写入数据库(
wp_options表) - 在 Apache 环境下尝试更新
.htaccess - 刷新 REST API 路由映射
在以下场景中,rewrite 规则非常容易“失效”:
- 本地环境端口发生变化(如 80 → 2234)
- 从其他环境迁移数据库
- 手动修改过
siteurl/home - 安装 / 卸载过与路由相关的插件(多语言、权限、REST 扩展等)
- Docker / 本地集成环境(如 Laragon、XAMPP、宝塔)重启异常
而 WordPress 默认并不会自动刷新 rewrite 规则,所以就会出现:
页面看似正常,但 REST API 全部 404
五、如何快速判断是不是“固定链接问题”
当你在 WordPress 中遇到以下情况时,可以第一时间尝试“保存固定链接”:
/wp-json/返回 404- Gutenberg 编辑器无法保存
- Ajax / admin-ajax.php 正常,但 REST API 不通
- 新注册的自定义 post type 无法访问
- 自定义路由突然失效
这是一个成本极低、成功率极高的排查步骤。
六、经验总结
- REST API 404 ≠ 服务器挂了
- 本地环境问题,优先从 WordPress 内部配置排查
- “保存一次固定链接” 是 WordPress 开发中的万能急救手段之一
建议在以下时机主动执行一次:
- 刚搭建完本地环境
- 数据库迁移后
- 修改站点 URL 后
- 出现无法解释的路由问题时
如果你经常进行 WordPress 本地开发、插件开发或外贸站点部署,这类问题几乎是必踩坑,记录下来可以节省大量排查时间。