Nginx でクエリ文字列を使用してリダイレクトする方法

Nginx でクエリ文字列を使用してリダイレクトする方法

リダイレクトしたい:

something.com/search?keywords='value'

something.com/search?q='value'

私の Nginx 設定は次のとおりです:

location ~ /search {
       if ($args ~* "keywords=(.*)") {
            rewrite ^.*$ /search?q=$arg_keywords permanent;
        }
    }

しかし、qリダイレクト時にパラメータは空になります。

なにが問題ですか?

答え1

しかし、リダイレクト時に q パラメータは空になります。

その問題は見当たりません。記述どおりの構成をテストすると、元のkeywords='value'URI が書き換えられた URI に追加されるため、リダイレクト ループが発生します。

書き換えられた URI に をrewrite追加することで、元のパラメータが含まれないようにすることができます。?

例えば:

rewrite ^ /search?q=$arg_keywords? permanent;

見るこのドキュメント詳細については。

関連情報