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