Nginx配置问题:子路径部署独立根目录WordPress站点,启用固定链接后跳转异常
Nginx配置问题:子路径部署独立根目录WordPress站点,启用固定链接后跳转异常
Hey,我看了你的配置和问题描述,这个问题其实挺常见的,主要是Nginx的alias规则和WordPress的站点URL配置没配合好,咱们一步步来解决:
问题根源分析
你的核心问题出在两个地方:
- Nginx的
/delocation里的try_files规则指向错误,导致启用固定链接后,请求会跳转到主站的index.php - WordPress本身的站点URL配置没对应上子路径,就算Nginx配置对了,WP自己生成的链接也会指向主域名
具体修改步骤
1. 修正Nginx配置
把你当前的/de location块替换成下面的内容,关键修改点我都标出来了:
location ^~ /de { alias /var/www/example.com.de; # 关键修改:最后要指向/de/index.php,而不是根目录的/index.php try_files $uri $uri/ /de/index.php$is_args$args; location ~ \.php$ { include snippets/fastcgi-php.conf; # alias模式下$request_filename能正确解析实际文件路径 fastcgi_param SCRIPT_FILENAME $request_filename; # 额外添加:帮WordPress识别当前子路径,避免生成错误链接 fastcgi_param REQUEST_URI $request_uri; fastcgi_param SCRIPT_NAME /de/index.php; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; } }
^~修饰符:让这个location优先匹配,避免和外层的~ \.php$规则冲突,确保/de下的PHP请求都走内部的处理逻辑try_files的最后一项改为/de/index.php$is_args$args:当请求的文件/目录不存在时,交给德语站的index.php处理,而不是主站的- 新增的两个
fastcgi_param:帮助WordPress正确识别当前的子路径上下文,生成符合预期的链接
2. 配置WordPress站点URL
这一步非常关键,WordPress会根据站点URL生成所有页面链接,不设置的话就算Nginx配置对了,WP自己也会跳回主域名:
- 如果能正常登录德语站后台(暂时用非固定链接模式),进入设置->常规,把**WordPress地址(URL)和站点地址(URL)**都设置为
https://www.example.com/de(如果用HTTPS的话) - 如果无法登录后台,直接修改德语站的
wp-config.php文件,添加以下两行:
define('WP_HOME','https://www.example.com/de'); define('WP_SITEURL','https://www.example.com/de');
3. 验证修改
修改完Nginx配置后,重启Nginx服务生效:
sudo systemctl restart nginx
然后刷新德语站页面,启用固定链接,测试各个页面,应该就不会跳回主域名了。
备注:内容来源于stack exchange,提问作者yucelm
相关产品推荐
相关产品推荐

