如何重写路径,转发参数和添加参数?

时间:2016-05-12 13:17:40

标签: nginx nginx-location

This SO disucssion说要在使用return重写网址时转发参数,代码应该类似于

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

到目前为止,这么好。但是如何在查询字符串中添加任意新参数?例如id=1

解决方案必须至少包括以下三种情况:

  1. 原始请求没有查询参数
  2. 原始请求包含查询参数,但不包含要添加的参数
  3. 原始请求已添加查询参数

1 个答案:

答案 0 :(得分:0)

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

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;  
} 
}

上面会附加' id'字段如果不存在于传入的URL中。