Назад | Перейти на главную страницу

Получить подстановочный знак местоположения nginx внутри блока местоположения?

Я пытаюсь настроить 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;