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

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

Вот что у меня есть:

if ( $request_uri = "/testing/signup" ) {
    rewrite ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 last;
}

location /testing/ {
    try_files $uri $uri/ /testing/index.php;
}

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

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

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

**** ОБНОВЛЕНИЕ ****

Я обновил, чтобы попробовать следующее:

location /testing/ {
    rewrite ^/testing/signup$ /testing/signup?org=1231564 break;
    try_files $uri $uri/ /testing/index.php$is_args$args;
}

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

2021/08/03 02:27:07 [notice] 3202#3202: *27 "^/testing/signup$" matches "/testing/signup", client: 146.75.168.54, server: example.com, request: "GET /testing/signup?id=1 HTTP/2.0", host: "www.example.com"
2021/08/03 02:27:07 [notice] 3202#3202: *27 rewritten data: "/testing/signup", args: "org=1231564&id=1", client: 146.75.168.54, server: example.com, request: "GET /testing/signup?id=1 HTTP/2.0", host: "www.example.com"
0
задан 2 August 2021 в 03:54
1 ответ

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

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

if ( $uri = "/testing/signup" ) {
    rewrite ^ https://www.example.com/testing/signup?org=7689879&type_id=65454 last;
}

location /testing/ {
    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= привет .

1
ответ дан 2 August 2021 в 12:28

Теги

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