regex - 不忽略请求参数的 nginx 规则

标签 regex redirect configuration nginx

好的,我只想在每次调用 /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/

相关文章:

http - 临时维护页面的最佳实践方法和状态代码是什么?

configuration - 如何关闭 Atom 中的片段?

javascript - 在 javascript 中用于文件路径验证的正则表达式

php - ZF2 - 用于全词搜索的 MySQL 正则表达式

javascript - 如何在行尾将字符串拆分为最多 2000 个字符?

configuration - NLog 系统日志配置文件

configuration - 配置 gvim 设置颜色和字体

python - 匹配任何 unicode 字母?

python - 如何使用请求从谷歌新闻链接获得重定向链接?

jquery - 在 TBODY 中第一个 TR 的最后一个 TD 中定位 anchor href