You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:28:01