好的,我只想在调用/search
时添加参数:
rewrite ^/search$ /search?foo=bar redirect;
似乎是简单的逻辑,但它导致无限循环,因为nginx分别获取参数,因此$
不再起作用。 /search?foo=bar
一次又一次地触发它,因为它愚蠢地匹配。
那么有没有触及$args
的工作解决方案?
(我想使用正则表达式,因为匹配规则有点复杂,但基本上就是我想要的)
答案 0 :(得分:4)
根据the nginx wiki,“重写仅在路径上运行,而不是参数。”
所以关键是只有在找不到参数时才重写。
if ($args !~ "(^|&)foo=") {
rewrite ^/search$ /search?foo=bar redirect;
}