Nginx环境下WordPress子目录部署:wp-admin访问异常求助
NGINX子目录部署WordPress wp-admin下载问题解决
访问wp-admin下内容触发文件下载,核心原因是NGINX没有将PHP请求转发给PHP解析器执行,同时原有location规则的匹配逻辑也存在缺陷,导致wp-admin相关的PHP文件被直接当作静态资源返回。
修正后的完整NGINX配置
# 根目录直接重定向到portal子目录 location = / { return 301 /portal/; client_max_body_size 20M; } # 处理portal子目录下的所有请求(含wp-admin、wp-json、多语言路径) location /portal/ { try_files $uri $uri/ /portal/index.php$is_args$args; # 嵌套规则处理子目录内的PHP文件 location ~ \.php$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的PHP版本调整套接字路径,也可使用127.0.0.1:9000(端口模式) fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; client_max_body_size 20M; } } # 处理根目录其他静态资源或默认请求(若有需要) location / { try_files $uri $uri/ /index.php$is_args$args; client_max_body_size 20M; }
关键调整说明
- 原根目录的
try_files改为直接301重定向,避免规则冲突,实现更可靠的根目录跳转 - 用
location /portal/替代原正则location,覆盖子目录下所有请求,包括wp-admin路径 - 在portal的location内嵌套PHP处理规则,确保子目录中的PHP文件(如wp-admin.php)被正确转发给PHP-FPM执行,而非直接下载
- 务必根据你的服务器PHP版本,调整
fastcgi_pass的套接字路径(比如PHP7.4对应/run/php/php7.4-fpm.sock)
额外检查项
- 确认PHP-FPM服务处于运行状态
- 登录WordPress后台,检查"设置-常规"中的**站点地址(URL)和WordPress地址(URL)**均设置为
https://你的域名/portal - 清理浏览器缓存后再测试wp-admin访问
内容的提问来源于stack exchange,提问作者Roddy P. Carbonell
相关产品推荐
相关产品推荐

