В настоящее время я перемещаю новые сборки существующего сайта на новый сервер с помощью 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;
Если числа всегда перед .html
суффикс, вы можете использовать эту конфигурацию:
location ~ ^/.+-ABC-([0-9]+)\.html$ {
return 302 $scheme://testsite.com/profile.php?url=$1;
}
С помощью location
- предпочтительный способ делать подобные вещи в nginx. В ~
указывает nginx использовать сопоставление регулярных выражений для поиска местоположения. Строка после этого и до {
это фактическая строка регулярного выражения.
Здесь мы сопоставляем любую строку, в начале которой есть любые символы, за которыми следует -ABC-
а затем любые числа, а затем заканчивающиеся на .html
суффикс.
Числа записываются в переменную $1
, потому что регулярное выражение для этой части заключено в круглые скобки.
Если вы хотите подробнее рассказать о регулярном выражении, в Интернете есть множество инструментов для регулярных выражений, где вы можете проверить свои изменения.