不忽略请求参数的nginx规则

好的,我只是想在每次调用/search时添加参数:

 rewrite ^/search$ /search?foo=bar redirect; 

似乎简单的逻辑,但它导致了无止境的循环,因为nginx单独参数,所以$不再工作。 /search?foo=bar一次又一次地触发它,因为它愚蠢地匹配。

那么是否有任何工作解决scheme,而不触及$args

(我想使用正则expression式,因为匹配规则有点复杂,但基本上是我想要的)

根据nginx wiki ,“重写只能在路径上运行,而不是参数”。

所以也许关键是只有在找不到参数的情况下才能重写。

  if ($args !~ "(^|&)foo=") { rewrite ^/search$ /search?foo=bar redirect; }