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

Azure环境下WordPress子目录多站点Nginx配置故障求助

WordPress子目录多站点Nginx配置问题解决方案

关键问题分析

  1. 域名配置不匹配:wp-config.php中DOMAIN_CURRENT_SITE设置为example.net,但实际主站点域名是example.com,导致子站点路由逻辑混乱。
  2. Nginx server_name错误:server_name包含路径(example.net/da),违反Nginx配置规范,server_name仅用于匹配域名,子目录需通过URI规则处理。
  3. PHP请求路由规则缺失:对于子站点下不存在的PHP文件(如/da/wp-admin/index.php),Nginx未正确转发至根目录index.php处理,导致404错误。
  4. 静态资源路由问题:子站点请求静态资源时,Nginx未正确映射到共享的wp-content目录,导致"File not found"。

分步修复

1. 修正wp-config.php域名配置

打开wp-config.php,确保DOMAIN_CURRENT_SITE与实际主站点域名一致:

define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // 替换为你的主站点域名

2. 调整Nginx server_name配置

编辑Nginx配置文件(通常位于/home/etc/nginx/conf.d/default.conf),移除server_name中的路径部分:

server_name example.com www.example.com; // 仅保留域名,移除/example.net/da这类路径

3. 优化主请求路由规则

修改location /块的try_files规则,确保子目录请求正确传递参数至根目录index.php:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

$is_args会自动识别是否存在查询参数,比?$args更严谨,避免参数丢失。

4. 修复PHP请求处理规则

修改location ~* \.php$块,添加try_files规则,将不存在的PHP文件请求转发至根目录index.php:

location ~* \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini                               
    try_files $uri /index.php$is_args$args; // 添加此行
    include fastcgi.conf;
    include fastcgi_params;                                                      
    fastcgi_intercept_errors on;                                                        
    fastcgi_pass php;                               
    fastcgi_read_timeout 300;                                                            
    fastcgi_cache_bypass $skip_cache;                                                         
    fastcgi_no_cache $skip_cache;                                                           
    fastcgi_cache off;                                                                
    fastcgi_cache_valid 60m;                                                                                  
}

5. 验证静态资源路由

确保静态资源规则正确,无需修改现有location ~* \.(js|css|png|jpg|jpeg|gif|ico)$块,但需确认root路径指向正确的WordPress根目录(/home/site/wwwroot)。

应用配置并重启服务

通过Azure App Service的启动脚本或SSH执行以下步骤:

  1. 保存修改后的Nginx配置文件。
  2. 重启Nginx服务:
service nginx restart

或通过Azure门户重启应用服务,确保配置生效。

额外排查点

  • 确认cgi.fix_pathinfo = 0已在php.ini中设置,避免PHP路径解析错误。
  • 检查WordPress多站点网络设置中的子站点URL是否与实际访问路径一致(如example.com/da)。
  • 清除浏览器缓存和WordPress缓存(若使用缓存插件),避免旧缓存导致的异常。

内容的提问来源于stack exchange,提问作者Sigurd Mazanti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:23:15