Виртуальные подкаталоги с NGINX

Я протестировал конфигурацию NGINX и могу успешно загрузить свои статические ресурсы, переписать и т. Д. По адресу www.site.com по адресу path /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;
}

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;
Другие вопросы по тегам