У меня есть URL-адрес продукта, который был заменен и требует постоянного перенаправления на другую страницу продукта для замены. Страница заменяющего продукта обслуживается proxy_pass. В моем контексте переданные параметры URL-адреса важны.
У меня есть следующая конфигурация:
location ~ ^/foo/bar {
return 301 /foo/baz$is_args$args;
}
location ~ ^/foo/baz {
set $public_folder_url /foo/baz;
proxy_set_header Host $host;
proxy_http_version 1.1;
resolver 8.8.8.8;
set $object_path $1;
set $sub_folder_path "$object_path/index.html?bust-cache=true";
set $backend_upstream "https://$host$public_folder_url$sub_folder_path";
proxy_pass $backend_upstream;
}
Результатом такой конфигурации является то, что в первый раз, когда браузер говорит / foo / bar? Param = 1, результатом будет foo / baz? Param = 1? Param = 1 Последующие запросы в том же браузере ведут себя правильно, но при открытии браузера В режиме инкогнито поведение можно воссоздать.
Если я изменю 301 на:
location ~ ^/foo/bar {
return 301 /foo/baz;
}
Тогда все вызовы / foo / bar? Param = 1 приводят к / foo / baz, и важный параметр теряется.
Что я делаю не так? Есть ли лучший способ достичь того, чего я хочу достичь, а именно успешного перенаправления 301 на другой URL-адрес с proxy_pass, который включает параметры URL-адреса?