如何让nginx的rewrite规则(redirect)只执行一次?

发布于 2022-09-01 22:48:07 字数 888 浏览 13 评论 0

rewrite ^/(.*).html$ /$1.html?mode=test redirect;

现在有上面那样的rewrite规则,可以生效,但会多次redirect。如何修改才能让它只跳转一次?

break也不行,因为break不会修改浏览器地址栏。

例如:
http://xxx.xx.xx/weather/bug.html会一直跳下去,出现weather/bug.html?mode=test&mode=test&mode=test&mode=test&mode=test&mode=test&mode=test&mode=test&mode……

更新

    location / {
            if($args *~ "mode=formal"){
                rewrite (.*) $1? redirect;
                rewrite (.*) $1?mode=test redirect;
            }
            else if($args [[不包含mode=test]]){
                rewrite ^/(.*).html$ /$1.html?mode=test redirect;
            }
            error_page 404 = @nodejs;
    }

我想用上面这种方式来配置,先判断$args,再进行rewrite,不知道能行不。
还有那个[[不包含mode=test]]应该怎么写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

善良天后 2022-09-08 22:48:07

用last试试看呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文