使用NGINX的虚拟子目录

使用NGINX的虚拟子目录,nginx,url-rewriting,location,subdirectory,Nginx,Url Rewriting,Location,Subdirectory,我已经测试了我的NGINX配置,可以在www.site.com的path/srv/public_html上成功加载我的静态资产、重写等 现在,我要做的是传递可以在www.site.com/us、www.site.com/ca、www.site.com/fr-ca等站点访问的虚拟子目录。。并让它们继承我已有的规则,就像文档根是/src/public\u html一样 我已经尝试添加下面的代码,站点通过root index.php传递,但是,我的静态资产在重写过程中丢失了 location ~ ^\

我已经测试了我的NGINX配置,可以在www.site.com的path/srv/public_html上成功加载我的静态资产、重写等

现在,我要做的是传递可以在www.site.com/us、www.site.com/ca、www.site.com/fr-ca等站点访问的虚拟子目录。。并让它们继承我已有的规则,就像文档根是/src/public\u html一样

我已经尝试添加下面的代码,站点通过root index.php传递,但是,我的静态资产在重写过程中丢失了

location ~ ^\/((?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)\/) { 
    try_files $uri $uri/ @rewriteVirtualSubDirectories;
}

location @rewriteVirtualSubDirectories {
    rewrite ^\/((?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)\/)? /index.php?args;
}

location ~* \.php$ {
    try_files $uri =404; # if reference to php executable is invalid return 404
    expires off;
    fastcgi_pass php-fpm;
    fastcgi_keep_conn on;
    fastcgi_buffer_size 128k;
    fastcgi_buffers    4 256k;

    limit_req zone=php burst=20 nodelay;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param UNIQUE_ID $connection.$connection_requests;
    fastcgi_param HTTPS $http_x_ssl_offloaded if_not_empty;
}
location~ ^\/(?us | us es | ca | fr ca | en gb | fr | hz hans | ja)\/)
尝试_文件$uri$uri/@rewriteVirtualSubDirectories;
}
位置@rewriteVirtualSubDirectories{
重写^\/(?us | us es | ca | fr ca | en gb | fr | hz hans | ja)\/)/index.php?args;
}
位置~*\.php${
尝试_files$uri=404;#如果对php可执行文件的引用无效,则返回404
过期;
fastcgi_pass php fpm;
fastcgi保持连接;
fastcgi_缓冲区大小128k;
fastcgi_缓冲器4 256k;
limit_req zone=php burst=20节点延迟;
包括fastcgi_参数;
fastcgi\参数脚本\文件名$document\根$fastcgi\脚本\名称;
fastcgi_参数唯一_ID$connection.$connection_请求;
fastcgi_参数HTTPS$http_x_ssl_如果不为空则卸载;
}

这似乎解决了问题:

删除:

location ~ ^\/((?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)\/) { 
    try_files $uri $uri/ @rewriteVirtualSubDirectories;
}

location @rewriteVirtualSubDirectories {
    rewrite ^\/((?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)\/)? /index.php?args;
}
rewrite ^\/(?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)(?<realPath>.*)$  $realPath break;