You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Nginx适配WordPress与NextJS前端时/wp-admin页面出现重定向循环问题求助

配置Nginx适配WordPress与NextJS前端时/wp-admin页面出现重定向循环问题求助

嘿,我仔细看了你的Nginx配置和curl输出,这个重定向循环问题其实是Nginx规则和WordPress的URL处理配合出了问题,咱们一步步来拆解解决:

问题根源分析

从你提供的curl输出能看到核心线索:

< x-redirect-by: WordPress
< location: https://mydomain.ee/wordpress/wp-admin/

不管是访问不带尾斜杠的/wordpress/wp-admin还是带尾斜杠的/wordpress/wp-admin/,都是WordPress在发起重定向,而且第二次访问带尾斜杠的地址时还循环重定向到自身。这说明WordPress接收到的请求路径信息异常,导致它一直认为当前URL不符合预期,不断触发重定向逻辑。

具体来看你的Nginx配置,/wordpress location里的try_files规则有明显问题:

try_files $uri $uri/wordpress/ /wordpress/index.php$is_args?$args;

当请求/wordpress/wp-admin时,$uri的值是/wordpress/wp-admin,这时候规则会尝试访问不存在的路径/var/www/wordpress/wp-admin/wordpress/(因为root是/var/www),直接落到index.php处理,但传递给WordPress的请求路径已经混乱,进而引发重定向循环。

解决方案

1. 修正Nginx的/wordpress location配置

把错误的try_files规则调整,并优化FastCGI参数传递,确保WordPress能拿到正确的请求信息:

location /wordpress {
    root /var/www;
    # 修正try_files:先尝试文件→尝试目录(带尾斜杠)→交给index.php处理
    try_files $uri $uri/ /wordpress/index.php$is_args$args;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        # 适配/wordpress前缀的路径拆分规则
        fastcgi_split_path_info ^(/wordpress/.+\.php)(/.+)$;
        # 确保PHP脚本路径指向正确
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # 强制传递完整请求URI,避免WordPress识别错误
        fastcgi_param REQUEST_URI $request_uri;
        include snippets/fastcgi-php.conf;
        fastcgi_buffers 1024 4k;
        fastcgi_buffer_size 128k;
    }
}

修改完成后重启Nginx生效:

sudo systemctl restart nginx

2. 确认WordPress的站点URL配置

通过/wordpress/wp-admin/index.php登录后台,进入「设置→常规」,检查以下两项是否都设置为:
https://mydomain.ee/wordpress
如果不一致,修改后保存。

3. 可选:强制WordPress识别HTTPS与正确URL

如果还是存在问题,可以在WordPress的wp-config.php文件末尾添加以下代码,强制指定站点URL并确保WordPress识别HTTPS请求(适配Nginx反向代理的场景):

define('WP_HOME','https://mydomain.ee/wordpress');
define('WP_SITEURL','https://mydomain.ee/wordpress');
define('FORCE_SSL_ADMIN', true);
// 识别Nginx传递的HTTPS协议头
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
}

总结

核心问题是Nginx的try_files规则错误导致请求路径传递混乱,加上WordPress对URL的严格校验,共同引发了重定向循环。按照上面的步骤调整后,应该就能正常访问/wordpress/wp-admin了。

备注:内容来源于stack exchange,提问作者OdifYltsaeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:54:34