Nginx leitet den Pfad zu einem anderen Pfad um

Nginx leitet den Pfad zu einem anderen Pfad um

Ich versuche, URLs mit Ninx umzuleiten, aber es gelingt mir nicht richtig:

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

im Grunde versuche ich, den /foo/Teil der URL zu entfernen.

ich habe folgendes versucht:

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

und auch:

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

Dies führt jedoch zu einem Fehler 414 Request-URI Too Largeund die URL lautet (zur Vereinfachung gekürzt):

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?

Was mache ich falsch?

Beachten Sie, dass ich 302 durch 301 ersetzen werde, sobald ich es richtig gemacht habe.

Antwort1

Sie haben am Anfang des Ziel-URL-Pfades, zu dem Sie offenbar umleiten wollten, ein Zirkumflex eingefügt. Dies gehört dort nicht hin und wird deshalb %5Ewiederholt angezeigt.

verwandte Informationen