Как изменить текущий редирект, чтобы отсечь первую часть локейшна и получить желаемый результат? Исходный редирект: https://domain.ru/url1/url2/url3/?code=XXX&state=YYY ==> https://domain2.ru/url2/url3?code=XXX&state=YYY Текущая настройка: if ( $request_uri ~ 'url1/url2/url3/(.*)$' ) { return 301 https://domain2.ru$request_uri; При использовании данной настройки в редирект попадает первая часть локейшна. Как отсечь ее в return'е?
Чтобы исключить определенную часть URL при использовании редиректа, вам нужно воспользоваться переменной $uri вместо $request_uri в return'е. Вот как будет выглядеть измененный редирект: if ( $request_uri ~ 'url1/url2/url3/(.*)$' ) { return 301 https://domain2.ru$uri$is_args$args; } Теперь первая часть локейшна будет отсутствовать в редиректе, и вы получите желаемый результат.
rewrite ^/url1/(url2/url3/) https://domain2.ru/$1 permanent;Или такif ($request_uri ~ '^/url1/(url2/url3/.*)') { return 301 https://domain2.ru/$1; }