【问题标题】:Virtual Subdirectories with NGINXNGINX 的虚拟子目录
【发布时间】:2018-04-18 03:54:15
【问题描述】:

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

现在,我要做的是传递可在 www.site.com/us、www.site.com/ca、www.site.com/fr-ca 等访问的虚拟子目录,并具有它们继承了我已有的规则,并且表现得好像文档根是 /src/public_html。

我已尝试附加下面的代码,并且该站点通过根 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;
}

【问题讨论】:

    标签: nginx url-rewriting location subdirectory


    【解决方案1】:

    看起来这解决了这个问题:

    删除:

    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;
    }
    

    server 范围内添加:

    rewrite ^\/(?<currentSite>us|us-es|ca|fr-ca|en-gb|fr|hz-hans|ja)(?<realPath>.*)$  $realPath break;
    

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2017-07-22
      • 2014-06-09
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多