2016-05-12 6 views
2

This SO disucssionreturnコードを使用して、URLを書き換える際に、前方のパラメータに、これまでのところ、このパスを書き換え、パラメータを転送し、パラメータを追加する方法は?

location /path/to/resource { 
    return 301 /some/other/path/$is_args$args; 
} 

にあまり良く似ているべきであると述べています。しかし、クエリ文字列に任意の新しいパラメータを追加する方法はありますか?例えば、id=1

溶液は、少なくともこれら三つのケースをカバーしなければならない:

  1. 元の要求には、クエリは、元の要求がクエリパラメータを有するが、パラメータが既に
  2. 元の要求を添加していない
  3. パラメータていませんクエリパラメータが追加されています

答えて

0

パスを書き換えるには、の書き換えキーワード01

location /path/to/resource { 
rewrite /some/other/path/$is_args$args; 
} 
が存在する場合、クエリのparamsを追加します$ argsは追加のparamsを転送すると、何のクエリparamsを渡されていない場合は空になります。次いで、ID = 1 ような新しいパラメーターの条件付加のため

構築物が同様に位置内で使用することができる場合:

location /path/to/resource { 
if($args !~* "id"){ 
rewrite /some/other/path/$is_args$args&id=1; 
} 
} 

着信URLに存在しない場合は、上記の「ID」フィールドを追加します。

+0

クエリパラメータがないとどうなりますか? "/ some/other/path /?&id = 1"と出てくるのではないでしょうか? – Epigene

+0

真実..しかし、私が言うことは、$ argsに値があり、それに応じて書き換えURLを形成するかどうかを確認するために複数のif条件を入れることができるということです – sallu

関連する問題