Я пытаюсь добавить параметры 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"
Добро пожаловать в 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= привет
.