好的,我只想在每次调用 /search
时添加参数:
rewrite ^/search$ /search?foo=bar redirect;
看似简单的逻辑,但它会导致无限循环,因为 nginx 单独获取参数,因此 $
不再起作用。 /search?foo=bar
一次又一次地触发它,因为它愚蠢地匹配。
那么在不触及 $args
的情况下是否有任何可行的解决方案?
(我想使用正则表达式,因为匹配规则有点复杂,但基本上是我想要的)
最佳答案
根据 the nginx wiki , "rewrite 仅对路径进行操作,而不对参数进行操作。"
所以也许关键是只有在找不到参数时才重写。
if ($args !~ "(^|&)foo=") {
rewrite ^/search$ /search?foo=bar redirect;
}
关于regex - 不忽略请求参数的 nginx 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997356/