WordPress保存Gutenberg小工具报错405 无效JSON响应rest_no_route
WordPress区块小工具保存报
rest_no_route错误解决方法 该错误核心是小工具专属REST接口匹配失败,由于文章区块保存功能正常,说明WordPress核心REST基础功能、PHP运行环境没有全局性问题,按以下优先级排查即可:
- 校验核心文件完整性与路由注册状态
首先访问站点根路径下的/wp-json/地址,在返回的全量路由列表中查找wp/v2/widgets、wp/v2/widget-types两个路由:- 如果找不到对应路由:先检查
wp-includes/rest-api/endpoints/目录下是否存在class-wp-rest-widgets-controller.php、class-wp-rest-widget-types-controller.php两个核心文件,确认文件属主、权限和同目录下其他核心文件一致(Ubuntu环境标准权限为属主www-data,文件644、目录755),文件缺失或损坏直接从对应WordPress版本的官方安装包解压覆盖即可——手动升级漏传文件、安全规则误删核心文件时,往往只会丢失部分路由控制器,就会出现“部分REST功能正常、部分功能报路由不存在”的现象。 - 确认没有自定义代码移除小工具路由:临时重命名
wp-content/mu-plugins目录排除必装插件影响,检查主题functions.php中是否存在通过rest_endpoints过滤器卸载小工具相关接口的逻辑。
- 如果找不到对应路由:先检查
- 排查Nginx规则冲突
同服务器部署多个WordPress实例时,Nginx location规则优先级错误是最高发的诱因:- 打开浏览器开发者工具网络面板,定位保存小工具时的失败请求,核对完整请求URL是否和当前站点域名、路径完全匹配,排除子目录站点请求被根目录站点规则拦截、跨站点路由不匹配的问题。
- 临时替换为WordPress官方标准Nginx伪静态规则,删除所有自定义的
/wp-json路径匹配规则、针对widgets关键词的安全拦截规则,重载Nginx后测试:location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } - 核对失败请求的请求方法,确认是POST请求,排除WAF/CDN规则篡改请求方法、拦截POST类型REST请求的情况。
- 数据库异常修复
如果上述步骤无效,先备份数据库后执行以下操作:- 清空REST接口相关缓存:
DELETE FROM wp_options WHERE option_name LIKE '_transient_rest_%'; DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_rest_%'; - 检查
wp_options表中所有widget_开头的选项值,排查是否有序列化格式损坏的第三方小工具残留数据,临时删除非WordPress默认的widget配置项后测试保存。
- 清空REST接口相关缓存:
- 基础配置校验
- 核对
wp-config.php中WP_SITEURL、WP_HOME常量值,和实际访问的站点地址完全一致,排除协议不匹配(http/https)、域名前缀不匹配(带www/不带www)、末尾多余斜杠导致的请求路径错误。 - 重启PHP7.4-fpm进程清空OPcache缓存,排除代码缓存未更新导致的路由加载失败问题。
- 核对
内容的提问来源于stack exchange,提问作者Kip Kniskern
相关产品推荐
相关产品推荐

