Nginx 如何重写路径、转发参数和添加参数?
表示在使用Nginx 如何重写路径、转发参数和添加参数?,nginx,nginx-location,Nginx,Nginx Location,表示在使用return重写url时转发参数,代码应类似于 location /path/to/resource { return 301 /some/other/path/$is_args$args; } 到目前为止,一切顺利。但是如何向查询字符串添加任意新参数?例如id=1 解决方案必须至少涵盖以下三种情况: 原始请求没有查询参数 原始请求有查询参数,但没有添加的参数 原始请求已经添加了查询参数 要重写路径,可以使用rewrite关键字,如 location /path/to/re
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
然后,如果可以在位置内使用构造,如:
location /path/to/resource {
if($args !~* "id"){
rewrite /some/other/path/$is_args$args&id=1;
}
}
如果传入url中不存在,则上面将附加“id”字段 如果没有查询参数会发生什么?它不会显示为“/some/other/path/?&id=1”吗?是的。。但我想说的是,您可以设置多个if条件来检查$args是否有任何值,并相应地形成重写url