Nginx перенаправляет путь на другой путь

Nginx перенаправляет путь на другой путь

Я пытаюсь перенаправить URL-адреса с помощью Ninx, но у меня не получается сделать это правильно:

example.com/{dynamic1}/foo/bar/{dynamic2}кexample.com/{dynamic1}/bar/{dynamic2}

по сути я пытаюсь удалить /foo/часть URL.

Я попробовал следующее:

location ~* ^/(.*)/foo/bar/(.*)$ {
  return 302 ^/$1/bar/$2?$args;
} 

а также:

location ~ ^/([^/]*)/foo/bar/(.*)$ {
  return 302 ^/$1/bar/$2?$args;
}

но это выдает ошибку 414 Request-URI Too Largeи URL в итоге становится таким (сокращено для ясности):

dynamic1/cams/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/%5E/dynamic1/bar/dynamic2?

Что я делаю не так?

Обратите внимание: как только я это сделаю, я заменю 302 на 301.

решение1

Вы поставили курсор в начале пути URL назначения, на который вы, по-видимому, намеревались перенаправить. Этому там не место, и именно поэтому оно %5Eпоявляется снова и снова.

Связанный контент