
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
繰り返し表示されます。