3

这个 SO disucssion说,在使用return代码重写 url 时转发参数应该类似于这个

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

到目前为止,一切都很好。但是如何在查询字符串中添加任意新参数呢?例如id=1.

解决方案必须至少涵盖以下三种情况:

  1. 原始请求没有查询参数
  2. 原始请求有查询参数,但没有添加的参数
  3. 原始请求已经添加了查询参数
4

1 回答 1

0

要重写路径,您可以使用rewrite关键字,例如

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

转发附加的参数 $args 将附加查询参数(如果存在),如果没有传递查询参数,则为空。

对于像 id=1 这样有条件地添加新参数,那么 if 构造可以在如下位置使用:

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

如果传入的 url 中不存在,上面将附加“id”字段。

于 2016-05-20T13:21:32.223 回答