Nginx 將路徑重新導向到不同的路徑

Nginx 將路徑重新導向到不同的路徑

我正在嘗試使用 Ninx 重定向 url,但我很難做到正確:

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

基本上我正在嘗試刪除/foo/網址的部分。

我已經嘗試過以下方法:

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?

我究竟做錯了什麼?

請注意,一旦我做對了,我將用 301 替換 302。

答案1

您已在您似乎打算重定向到的目標 URL 路徑的開頭放置了插入符號。這不屬於那裡,這就是為什麼%5E反覆出現的原因。

相關內容