nginx规则,用于忽略请求参数

时间:2012-06-12 13:08:41

标签: regex redirect configuration nginx

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

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

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

那么有没有触及$args的工作解决方案?

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

1 个答案:

答案 0 :(得分:4)

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

所以关键是只有在找不到参数时才重写。

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