网站正常但wp-admin报404 Not Found错误(Nginx环境)求助
问题:外部访问WordPress后台/wp-admin出现404错误,主机端可正常访问
问题详情
- 网站前台可正常运行,但外部访问
https://modafinilminds.com/wp-admin时显示404 Not Found错误 - 通过网站主机端(如主机内部预览、cPanel后台访问)可正常打开/wp-admin
- 已检查文件并更新
.htaccess,内容如下:
# BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteRule ^en/wp-login.php /wp-login.php [QSA,L] RewriteRule ^de/wp-login.php /wp-login.php [QSA,L] RewriteRule ^ja/wp-login.php /wp-login.php [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress # BEGIN LiteSpeed # The directives (lines) between "BEGIN LiteSpeed" and "END LiteSpeed" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule Litespeed> SetEnv noabort 1 </IfModule> # END LiteSpeed
原因分析
- 缺少/wp-admin的重写规则:当前
.htaccess仅针对多语言版本的wp-login.php做了跳转,但未处理/wp-admin路径。外部请求/wp-admin时,没有匹配的规则,最终被WordPress默认规则转发到index.php,返回404。 - 主机端与外部访问逻辑差异:主机端访问可能绕过了部分Rewrite规则(比如使用本地IP/域名,未触发完整的域名解析和重写流程),因此能正常打开,而外部访问暴露了规则缺失的问题。
- LiteSpeed规则/缓存影响:服务器使用LiteSpeed时,可能存在缓存未清除或规则加载顺序问题,导致
/wp-admin请求未被正确处理。
修复方案
- 添加/wp-admin重写规则:在
.htaccess的WordPress区块中,插入针对/wp-admin的规则,确保请求指向实际入口文件。修改后的代码如下:
# BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] # 添加/wp-admin重写规则,处理根路径的后台请求 RewriteRule ^wp-admin/?$ /wp-admin/index.php [L] RewriteRule ^en/wp-login.php /wp-login.php [QSA,L] RewriteRule ^de/wp-login.php /wp-login.php [QSA,L] RewriteRule ^ja/wp-login.php /wp-login.php [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress # BEGIN LiteSpeed # The directives (lines) between "BEGIN LiteSpeed" and "END LiteSpeed" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule Litespeed> SetEnv noabort 1 </IfModule> # END LiteSpeed
- 重置固定链接:通过主机端登录/wp-admin,进入「设置」→「固定链接」,直接点击「保存更改」,让WordPress自动生成正确的
.htaccess规则(操作前建议备份当前.htaccess)。 - 清除LiteSpeed缓存:进入主机面板的LiteSpeed缓存管理界面,清除所有缓存,并确保
/wp-admin路径被添加到缓存排除列表。 - 检查文件权限:确认
/wp-admin目录权限为755,内部文件权限为644,避免因权限问题导致外部访问被拒绝。
内容的提问来源于stack exchange,提问作者code Gravtor
相关产品推荐
相关产品推荐

