这个 SO disucssion说,在使用return
代码重写 url 时转发参数应该类似于这个
location /path/to/resource {
return 301 /some/other/path/$is_args$args;
}
到目前为止,一切都很好。但是如何在查询字符串中添加任意新参数呢?例如id=1
.
解决方案必须至少涵盖以下三种情况:
- 原始请求没有查询参数
- 原始请求有查询参数,但没有添加的参数
- 原始请求已经添加了查询参数
这个 SO disucssion说,在使用return
代码重写 url 时转发参数应该类似于这个
location /path/to/resource {
return 301 /some/other/path/$is_args$args;
}
到目前为止,一切都很好。但是如何在查询字符串中添加任意新参数呢?例如id=1
.
解决方案必须至少涵盖以下三种情况:
要重写路径,您可以使用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”字段。