3

This SO disucssionreturnは、コードを使用してURLを書き換えるときにパラメーターを転送するには、これに似ている必要があることを示しています

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

ここまでは順調ですね。しかし、クエリ文字列に任意の新しいパラメーターを追加するにはどうすればよいでしょうか? たとえばid=1

ソリューションは、少なくとも次の 3 つのケースをカバーする必要があります。

  1. 元のリクエストにはクエリ パラメータがありません
  2. 元のリクエストにはクエリ パラメータがありますが、追加されるパラメータはありません
  3. 元のリクエストには、クエリ パラメータがすでに追加されています
4

1 に答える 1

0

パスを書き換えるには、次のようなrewriteキーワード を使用できます

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

パラメーターを転送するには、$args を追加すると、存在する場合はクエリ パラメーターが追加され、クエリ パラメーターが渡されない場合は空になります。

id=1 のような新しいパラメーターの条件付き追加の場合、次のような場所でコンストラクトを使用できる場合:

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

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

于 2016-05-20T13:21:32.223 に答える