Рейтинг:0

Добавить параметр URL для запроса URI с помощью Nginx

флаг ng

Я пытаюсь добавить параметры URL к конкретному URI запроса в блоке сервера.

Это то, что у меня есть до сих пор:

если ($request_uri = "/тестирование/регистрация" ) {
    переписать ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 последний;
}

местоположение /тестирование/ {
    try_files $uri $uri/ /testing/index.php;
}

Однако это работает только в том случае, если исходный URI запроса не имеет собственных параметров URL (например, www.example.com/testing/signup?abc=hello) Я хочу сохранить исходные параметры URL и добавить свои собственные.

Я попытался изменить регулярное выражение на if ( $request_uri ~* "^/тестирование/регистрация" ) { но это вызывает петлю.

Кто-нибудь может помочь?

**** ОБНОВИТЬ ****

Я обновил, чтобы попробовать это:

местоположение /тестирование/ {
    переписать ^/testing/signup$ /testing/signup?org=1231564 break;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

Это не передает параметры URL, но при проверке журналов видно, что как существующий параметр URL, так и новый находятся в переменной args.Но как мне передать их в запрос GET, чтобы сервер мог с ними воздействовать?

03.08.2021 02:27:07 [уведомление] 3202#3202: *27 "^/testing/signup$" соответствует "/testing/signup", клиент: 146.75.168.54, сервер: example.com, запрос: " GET /testing/signup?id=1 HTTP/2.0", хост: "www.example.com"
03.08.2021 02:27:07 [уведомление] 3202#3202: *27 перезаписанных данных: "/testing/signup", аргументы: "org=1231564&id=1", клиент: 146.75.168.54, сервер: example.com , запрос: "GET /testing/signup?id=1 HTTP/2.0", хост: "www.example.com"
флаг sv
Добро пожаловать в ServerFault. Вы должны использовать `$uri` в условии `if`. Кстати, `$request_uri` также содержит аргументы. Вот почему ваш код не работает, если запрос содержит собственные параметры, такие как `www.example.com/testing/signup?abc=hello`. Как правило, исходные параметры добавляются в конце, когда мы пытаемся добавить собственные параметры.
Рейтинг:1
флаг sv

Добро пожаловать в ServerFault.

Переменная request_uri содержит «полный исходный URI запроса (с аргументами)». Поэтому запрос с существующим параметром не работал для исходного кода. Вместо этого мы могли бы использовать ури это нормализованный. Итак, следующий код будет работать...

если ($uri = "/тестирование/регистрация" ) {
    переписать ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 последний;
}

местоположение /тестирование/ {
    try_files $uri $uri/ /testing/index.php;
}

Обратите внимание, что исходные параметры добавляются к параметрам, добавленным вручную. Итак, для запроса типа www.example.com/testing/signup?abc=hello, URI переписывается в www.example.com/testing/signup?org=7689879&type_id=65454&abc=hello.

Michael Hampton avatar
флаг cz
Это будет работать отлично. Конечно, это также приведет к бесконечному циклу перенаправления, потому что он перенаправил обратно на тот же путь URL. Но это совсем другой вопрос.
Neil Simpson avatar
флаг ng
Да, в том-то и проблема, что я постоянно попадаю в петлю. Итак, есть ли решение, которое не вызовет цикл?
флаг sv
Это другой вопрос. Пожалуйста, создайте еще один вопрос и опубликуйте полную конфигурацию, чтобы разобраться с проблемой бесконечного цикла.
Neil Simpson avatar
флаг ng
Не совсем другой вопрос, поэтому он будет заблокирован. Проблема зацикливания заключается в исходном вопросе, и решение, вызывающее зацикливание, на самом деле не является решением. Ваше решение не работает @pothi-kalimuthu

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.