3

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

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

看似简单的逻辑,但它会导致无限循环,因为 nginx 单独获取参数,因此$不再工作。/search?foo=bar一次又一次地触发它,因为它愚蠢地匹配。

那么有没有任何可行的解决方案而不接触$args

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

4

1 回答 1

4

根据nginx wiki,“重写只对路径进行操作,而不是参数。”

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

    if ($args !~ "(^|&)foo=") {
        rewrite ^/search$ /search?foo=bar redirect;
    }
于 2012-06-12T13:43:12.243 回答