WordPress REST API POST请求报rest_no_route 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

