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

WordPress REST API POST请求报rest_no_route 404错误求助

排查WordPress REST API POST请求404错误的可能原因

问题重现

原本正常工作的WordPress REST API接口,现在POST请求返回404错误:

{ "code": "rest_no_route", "message": "A path that matches the URL and request method was not found.", "data": { "status": 404 } }

GET请求仍正常运行,已尝试切换请求方法大小写、刷新.htaccess、修改端点路径,但问题未解决。

相关代码

add_action( 'rest_api_init', 'register_api_hooks');
function register_api_hooks(){
    register_rest_route('users/v1','/upload_archieve',
        array('methods' => 'POST','callback' =>'Upload_archive_file'));
    register_rest_route('users/v1','/get_archive',
        array('methods' => 'GET','callback' => 'get_archive_files'));
}

function get_archive_files($r){
    return $r['user_id'];
}

function Upload_archive_file($r){
    return upload_file($_FILE['attachment']);
}

可能的原因及解决方法

  • 函数内致命语法错误导致路由未注册:
    注意Upload_archive_file函数中使用了$_FILE['attachment'],正确的全局变量是$_FILES(复数形式)。这个错误会触发PHP致命错误,打断REST API初始化流程,导致POST路由无法正常注册。修复为$_FILES['attachment']后重新测试。

  • 路由命名冲突:
    其他插件或主题可能注册了相同命名空间users/v1下的/upload_archieve端点,覆盖了你的POST路由。尝试修改命名空间(比如改为custom-users/v1),重新注册路由后测试。

  • 缺失权限验证导致路由被拦截:
    若近期更新了WordPress或相关插件,可能新增了权限验证要求。在注册POST路由时添加permission_callback,确保请求具备合法权限:

    register_rest_route('users/v1','/upload_archieve',
        array(
            'methods' => 'POST',
            'callback' =>'Upload_archive_file',
            'permission_callback' => function() {
                // 根据实际需求调整权限,比如允许登录用户访问
                return is_user_logged_in();
            }
        )
    );
    
  • 请求路径拼写错误:
    检查请求URL中的端点路径是否与注册的完全一致——你注册的是/upload_archieve(注意拼写是archieve),若请求时误写为/upload_archive(正确拼写archive),会直接返回404。

  • 缓存未彻底清除:
    除了刷新.htaccess,还需清空WordPress对象缓存、服务器端缓存(如Redis、Memcached)及浏览器缓存,避免旧路由规则被缓存导致请求匹配失败。

内容的提问来源于stack exchange,提问作者Omar Ehab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:45:31