Nginx 경로를 다른 경로로 리디렉션

Nginx 경로를 다른 경로로 리디렉션

Ninx를 사용하여 URL을 리디렉션하려고 하는데 올바르게 수행하는 데 어려움을 겪고 있습니다.

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반복해서 나타나는 이유입니다.

관련 정보