web-dev-qa-db-ja.com

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

リダイレクトしたい:

something.com/search?keywords='value'

something.com/search?q='value'

これが私のNginx設定です:

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

ただし、リダイレクトではqパラメータは空です。

なにが問題ですか?

2
Ordidaad

ただし、リダイレクトではqパラメータは空です。

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

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

例えば:

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

詳細は このドキュメント を参照してください。

1
Richard Smith