nginx извлечение из request_uri и добавление его в redirct destination

Я переношу новые сборки существующего сайта на новый сервер с помощью nginx, и мне сказали, что URL должен быть направлен на новый PHP-файл для обработки того, как выбрать дату из новой базы данных.

пример входящего URL будет следующим:

https://testsite.com/test-account-here-ABC-123456.html

Он должен быть пойман nginx и перенаправлен на

https://testsite.com/profiles.php

где файл сделает свое дело и извлечет url, чтобы получить его детали и выполнить поиск.

Я настроил перенаправление, исходя из того, что $request_uri находит **-ABC-* в url так :

if ($request_uri ~ ^/(.*)-ABC-)
{
    return 302 $scheme://testsite.com/profile.php;
}

что успешно переходит к этому PHP файлу, но мне нужно иметь возможность извлечь числа из URL (123456), чтобы я мог получить к ним доступ через строку запроса в PHP файле, я пытался использовать

return 302 $scheme://testsite.com/profile.php?url=$request_uri;

но это возвращает полный url, что вызывает бесконечный цикл перенаправления и ошибку браузера.

Есть ли способ извлечь часть $request_uri для повторного использования в редиректе?

Что-то вроде

return 302 $scheme://testsite.com/profile.php?url=$variable1;
0
задан 11 July 2017 в 13:13
1 ответ

Если числа всегда перед суффиксом .html , вы можете использовать следующую конфигурацию:

location ~ ^/.+-ABC-([0-9]+)\.html$ {
    return 302 $scheme://testsite.com/profile.php?url=$1;
}

Использование расположение является предпочтительным способом сделать такие вещи в nginx. ~ указывает nginx использовать сопоставление регулярных выражений для поиска местоположения. Строка после этого и перед { является фактической строкой регулярного выражения.

Здесь мы сопоставляем любую строку, которая имеет любые символы в начале, за которыми следует -ABC- , а затем любые числа , а затем оканчивается суффиксом .html .

Числа записываются в переменную $ 1 , поскольку регулярное выражение для этой части заключено в круглые скобки.

Если вы хотите Чтобы подробнее проработать регулярное выражение, в Интернете есть множество инструментов для работы с регулярными выражениями, где вы можете проверить свои изменения.

0
ответ дан 24 November 2019 в 04:16

Теги

Похожие вопросы