Ваш rewrite...last
ничего не достигает, так как это внутренний процесс, который в конечном итоге заканчивается на /index.php
.Ваш сценарий index.php
использует исходный запрос (возможно, из параметра REQUEST_URI) для определения конечной точки API.
Необходимо выполнить внешнее перенаправление, используя rewrite...permanent
, чтобы сделать его видимым для index.php
.Подробнее см. в этом документе .
Например:
rewrite ^/create/ /users/v1/create permanent;
Или более эффективно, а также для работы с запросами POST и GET:
location /create/ { return 307 /users/v1/create$is_args$args; }
Если вы хотите поддерживать старый API без перенаправления, вам нужно будет одурачить index.php
выделенным блоком местоположения, например:
location /create/ {
include fastcgi_params;
fastcgi_param REQUEST_URI /users/v1/create;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
Многие из ваших fastcgi
директивможет быть перемещен во внешний блок, так что вам не нужно писать их дважды.Подробнее см. в этом документе .