本地XAMPP环境下WordPress自定义REST API端点返回404 Not Found问题求助
本地XAMPP环境下WordPress自定义REST API端点返回404 Not Found问题求助
看起来你遇到了WordPress REST API开发中很常见的404问题,我帮你一步步拆解可能的原因和对应的解决方案:
1. 最核心的问题:请求URL缺少WordPress REST API的默认前缀wp-json
这是绝大多数人第一次自定义REST API时会踩的坑:WordPress所有的REST API端点(包括你自定义的),默认都是挂载在wp-json/这个路径下的,而你前端代码里拼接的请求URL完全没包含这个关键前缀!
你当前前端请求的URL是:
http://localhost/mysite/rolemaster-character-creation/myendpoint/v1/create_character_submit/
但正确的端点URL应该是:
http://localhost/mysite/wp-json/myendpoint/v1/create_character_submit/
修复前端的URL构建逻辑
把你代码里的baseUrl替换成WordPress REST API的根路径,而不是当前页面的路径:
// 替换原来的baseUrl定义,直接指向WP REST API的根路径 const restApiBaseUrl = window.location.origin + "/mysite/wp-json/"; // 然后在fetch时拼接端点路径 const response = await fetch(restApiBaseUrl + "myendpoint/v1/create_character_submit/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(jsonData) });
2. 确认你的端点注册代码被正确执行
确保registerEndpointCreateCharacter函数真的被WordPress加载到了:
- 如果你把这段PHP代码放在主题的
functions.php里,要确认当前主题是激活状态; - 如果是放在自定义插件里,必须确保插件在WordPress后台已经启用;
- 可以临时加个调试日志验证:
function registerEndpointCreateCharacter(): void { // 加这句,然后查看wp-content/debug.log(需要开启WP_DEBUG) error_log("Create Character Endpoint Registered!"); register_rest_route( 'myendpoint/v1', '/create_character_submit/', array( // ... 你的原代码不变 )); } add_action('rest_api_init', 'registerEndpointCreateCharacter' );
3. 检查端点注册的细节优化
你的PHP注册代码大体没问题,但可以做几个小调整避免潜在问题:
- 用WordPress官方推荐的常量指定请求方法,替代硬写的
POST:
'methods' => WP_REST_Server::CREATABLE,
- 确保你的回调函数
callbackCreateCharacter存在,并且能正确接收请求参数,先写个最简版本测试:
function callbackCreateCharacter(WP_REST_Request $request) { // 先返回一个简单的成功响应,验证端点可用 return rest_ensure_response([ 'status' => 'success', 'message' => 'Endpoint is working!' ]); }
4. 其他环境层面的排查点
- 固定链接设置:在WordPress后台「设置-固定链接」里,不要用「朴素」模式(即带
?p=ID的格式),改成「文章名」或其他友好格式,因为REST API依赖Apache的重写规则,朴素模式下会失效; - 刷新重写规则:在固定链接设置页面,随便修改一个选项再点击「保存更改」,触发WordPress重写规则的刷新;
- XAMPP的mod_rewrite:确保Apache的
mod_rewrite模块已经启用,这是WordPress固定链接和REST API正常工作的必要条件。
快速测试方法
先跳过前端,直接用Postman或浏览器的REST客户端工具,发送POST请求到http://localhost/mysite/wp-json/myendpoint/v1/create_character_submit/,如果能收到回调函数返回的响应,说明后端端点没问题,再调整前端代码即可。
按照这些步骤排查,应该能快速解决你的404问题。如果还有疑问,可以补充wp-content/debug.log的内容或者工具测试的结果,我再帮你进一步分析~
内容来源于stack exchange
相关产品推荐
相关产品推荐

