Виртуальные подкаталоги с 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;