【问题标题】:nginx rule for NOT ignoring request parameters用于不忽略请求参数的 nginx 规则
【发布时间】:2012-06-15 09:02:03
【问题描述】:

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

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

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

那么有没有不接触$args的有效解决方案?

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

【问题讨论】:

    标签: regex redirect configuration nginx


    【解决方案1】:

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

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

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

    【讨论】:

    • 我正要提交同样的回复。我同意。
    • 但是,覆盖(或重复写入)查询字符串是否存在危险?也许替换实际上应该是/search?foo=bar&$args--试一试,让我们知道@Calmon!
    猜你喜欢
    • 2012-02-13
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多