次のパラメーターがURLの最後に追加されるようにリバースプロキシを構成する必要があります。_&locale=de-de
_
これはほとんど機能します:
rewrite ^(.*)$ $1&locale=de-de break;
ただし、問題は、「&locale = de-de」がまだない場合にのみ追加する必要があるということですand「?」がある場合URLに...
これを行うための正しい正規表現の定式化についていくつかの助けを得ることができますか?
別の質問:これを使用すると、URLの疑問符が表示されないのはなぜですか。
$ uri?$ args
または、$ uri $ is_args $ argsはエンコードされていないURLを変換し、疑問符は%3fとして表示されます。
アイデア?
編集:この動作は、proxy_passと組み合わせて使用しているときに存在するようです。単純な書き直しでは、それは本当にうまくいきます。
rewrite
では、URLのpath部分のみと照合します。つまり、$1
にはクエリ文字列は含まれません。だから、それは安全に書くべきです
rewrite ^(.*)$ $1?locale=de-de break;
Nginxに元のクエリ文字列を追加させたくない場合は、単に?
置換URLの最後:
rewrite ^(.*)$ $1?locale=de-de? break;
rewrite
はリクエストパラメータを変更せず、URIのパス部分のみを変更します。私の経験では、書き換えをいじると、奇妙なサイクルが発生し、新しいパラメータが無限に追加されます。 Nginxでこれを行う方法は、おそらく書き換えではありません。
代わりに、$args
set
ディレクティブを使用した変数:
set $args $args&locale=de-de;
rewrite
の一致にはクエリパラメータが含まれていないため、別の場所でテストする必要があります。
試してください:
if ($args !~* locale=de\-de){
rewrite ^(.*)$ $1&locale=de-de last;
}