2016-05-12 136 views
2

This SO disucssion说,重写使用return的代码应类似于此如何重写路径,转发参数和添加参数?

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

到目前为止,这么好一个URL时向前参数。但如何添加一个任意的新参数到查询字符串?例如id=1

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

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

回答

0

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

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

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

对于条件除了像ID = 1 然后新PARAM如果构建体可以在位置内等中使用:

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

如果不存在,在输入以上网址将追加的“id”字段。

+0

如果没有查询参数会发生什么?它不会以“/ some/other/path /?&id = 1”出现吗? – Epigene

+0

真的..但我想说的是你可以把多个条件来检查$ args是否有任何值,并相应地形成重写url – sallu