【问题标题】:Redirection if query parameter exists on nginx如果 nginx 上存在查询参数,则重定向
【发布时间】:2012-05-28 09:24:41
【问题描述】:

我正在使用 IPB 论坛。我设法使用友好的 url 和 nginx 服务器配置修改。但是,我需要将旧论坛的 URL 重定向到重定向器 php 文件,以获取主题(或论坛、成员等)的当前 URL。例如:如果url是/forum/index.php?board=23,我会重定向到redirector.php。

这是我当前的配置,能够在 IPB 上使用友好的 URL

    location /forum {
        try_files $uri $uri/ /forum/index.php;
        rewrite ^ /forum/index.php? last;
    }

当我像下面这样在这个位置块中插入一个 if 语句时,我无法检索查询参数“board”。

location /forum {
        if ($arg_board != "") {
            rewrite ^ /redirector.php?q=$arg_board break;
        }
        try_files $uri $uri/ /forum/index.php;
        rewrite ^ /forum/index.php? last;
    }

这里缺少什么?

【问题讨论】:

    标签: redirect nginx rewrite forum ipb


    【解决方案1】:

    您的问题与使用 break 而不是 last 有关。来自文档:

    http://wiki.nginx.org/HttpRewriteModule#rewrite

    last - 完成当前重写指令的处理并重新启动该过程(包括重写),并从 所有可用位置搜索 URI 上的匹配项。

    break - 完成当前重写指令的处理,非重写处理仅在 当前位置块内继续

    由于您没有在 /forum 位置块中为 /redirector 定义处理程序,因此您的 if(..) { rewrite } 不会执行您想要的操作。将其作为最后一个中断,以便重写可以触发适当的位置块。

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 2021-10-19
      • 2019-07-28
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多