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