WordPress网站突现全白屏及REST API 401权限错误求助
WordPress白屏+REST API 401错误排查解决方案
问题定位
网站切换默认主题正常,切回常用主题出现白屏,伴随以下错误:
- REST API接口
/wp/v2/settings和/wp/v2/users/me返回401未授权 - Elementor生成的缩略图404缺失
- 未捕获Promise错误:
rest_not_logged_in
核心问题是主题/Elementor在未登录状态下调用了需要编辑权限的REST接口,同时存在资源缺失问题。
分步解决方案
1. 修复Elementor缩略图404问题
- 登录后台,进入
Elementor > 工具,点击「重新生成CSS & 文件」,完成后清理缓存 - 若重新生成无效,检查
wp-content/uploads/2024/03/elementor/thumbs/目录是否存在该图片,若不存在,重新上传Logo并更新主题/Elementor中的Logo配置 - 清理WordPress缓存插件(如WP Rocket、W3 Total Cache)和浏览器缓存
2. 解决REST API 401未授权错误
检查主题/Elementor的API调用逻辑
- 通过FTP或后台主题编辑器,搜索主题文件中的
wp-json/wp/v2/users/me或wp-json/wp/v2/settings代码- 若找到调用
/wp/v2/users/me?context=edit的代码,将context=edit改为context=view(view权限允许未登录访问) - 或者添加判断,仅在用户登录时调用这些接口:
if (is_user_logged_in()) { // 原API调用代码 }
- 若找到调用
排查Elementor插件问题
- 临时禁用Elementor插件,切换回常用主题测试:若网站恢复正常,说明是Elementor的问题
- 更新Elementor到最新稳定版;若更新后仍有问题,回滚到之前正常的版本
- 禁用Elementor的所有扩展插件,逐一排查是否有冲突
调整REST API权限设置
- 进入后台
设置 > 阅读,确保站点设置为「任何人都可以访问」(公开站点) - 安装
WP REST API Controller插件,进入插件设置,找到wp/v2/settings和wp/v2/users的权限配置,确保「未登录用户」拥有读取权限
重新配置.htaccess文件
- 替换现有.htaccess为WordPress默认规则(包含Authorization传递):
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] </IfModule> # END WordPress - 确保服务器开启
mod_rewrite模块,且.htaccess文件权限设置为644
3. 排查主题自定义代码冲突
- 打开主题的
functions.php文件,检查是否存在修改REST API权限的代码(如add_filter('rest_authentication_errors', ...)),若有,临时注释后测试 - 若主题有自定义JS文件,检查是否在前端未登录时强制调用需要授权的API接口,修改调用逻辑
内容的提问来源于stack exchange,提问作者Bruno Andrade
相关产品推荐
相关产品推荐

