Здравствуйте. Есть Advanced-приложение Yii2, которое имеет: backend, frontend, api.
Под backend, frontend получилось составить редиректы, но вот под API что-то не выходит.
API идет по ссылке: site.zone/api/web, хотелось бы добиться ссылки вида site.zone/api
Рабочие конфигурации для frontend/backend:
location / {
root $base_root/frontend/web;
try_files $uri $uri/ /frontend/web/index.php$is_args$args;
location ~ ^/assets/.+\.php(/|$) {
deny all;
}
}
location /admin {
alias $base_root/backend/web;
try_files $uri /backend/web/index.php?$args;
location = /admin/ {
return 301 /admin;
}
location ~* ^/admin/(.+\.php)$ {
try_files $uri /backend/web/$1?$args;
}
}
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
rewrite (?!^/((frontend|backend)/web|admin))^ /frontend/web$uri break;
rewrite (?!^/backend/web)^/admin(/.+)$ /backend/web$1 break;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
location ~ /\. {
deny all;
}
Вот пробовал такой вариант для API, но идет краш: "Access denied" по всему приложению(добавлены (32-35 строка, 44 строка к предыдущему конфигу):
location / {
root $base_root/frontend/web;
try_files $uri $uri/ /frontend/web/index.php$is_args$args;
location ~ ^/assets/.+\.php(/|$) {
deny all;
}
}
location /admin {
alias $base_root/backend/web;
try_files $uri /backend/web/index.php?$args;
location = /admin/ {
return 301 /admin;
}
location ~* ^/admin/(.+\.php)$ {
try_files $uri /backend/web/$1?$args;
}
}
location /api {
alias $base_root/api/web;
try_files $uri /api/web/index.php?$args;
location = /api/ {
return 301 /api;
}
location ~* ^/api/(.+\.php)$ {
try_files $uri /api/web/$1?$args;
}
}
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
rewrite (?!^/((frontend|backend)/web|admin))^ /frontend/web$uri break;
rewrite (?!^/backend/web)^/admin(/.+)$ /backend/web$1 break;
rewrite (?!^/api) /api/web$1 break;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
location ~ /\. {
deny all;
}