Я пытаюсь настроить 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
. Однако маршрут, переданный Slim (который выглядит так, как будто он представлен 1 долларом в строке 6), по-прежнему является полным /foobar/route
. Это означает, что мне нужно добавить все мои Slim-маршруты с помощью /foobar
, что, хотя я могу использовать группу 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;