Я пытаюсь настроить API, где я могу получить доступ к API " foobar "через URL http://my-apis.com/foobar/route
. Вот что у меня есть:
location ~ ^/foobar(/.*)$ {
root /var/www/mysite/foobar/public;
... more fastcgi stuff ...
fastcgi_param SCRIPT_FILENAME $document_root/index.php$1;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
API выполняет маршрутизацию к приложению Slim framework, и в настоящее время он успешно перенаправляется на правильный index.php, показывая nginx 404/403 всякий раз, когда URL-адрес не начинается с / foobar
. Однако путь прошел к Слиму (который, похоже, s, представленный $ 1 в строке 6), по-прежнему является полным / foobar / route
. Это означает, что мне нужно добавить все мои маршруты Slim с помощью / foobar
, что, хотя я могу использовать группу Slim, по-прежнему вызывает затруднения. Я хотел бы иметь возможность передавать Slim только бит / route
.
Есть ли способ извлечь только бит, соответствующий подстановочному знаку, из директивы местоположения? Так как $ 1 дает полный маршрут. В качестве альтернативы я мог бы сделать это с помощью какой-нибудь перезаписи, но я недостаточно знаю о Slim.
Любая помощь будет очень признательна!
Спасибо!
SCRIPT_FILENAME
- это путь к сценарию, а не исходный URI. Скрипты получают информацию о пути из PATH_INFO
или путем декодирования исходного URI (используя REQUEST_URI
).
Это может сработать для вас:
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $1;