Redirect 如果nginx上存在查询参数,则重定向

Redirect 如果nginx上存在查询参数,则重定向,redirect,nginx,rewrite,forum,ipb,Redirect,Nginx,Rewrite,Forum,Ipb,我正在使用IPB论坛。我设法在nginx服务器配置修改中使用友好的url。但是,我需要将旧论坛的url重定向到重定向器php文件,以获取主题(或论坛、成员等)的当前url。例如:如果url类似于/forum/index.php?board=23,我将重定向到redirector.php 这是我目前的配置,能够在IPB上使用友好的URL location /forum { try_files $uri $uri/ /forum/index.php; rewr

我正在使用IPB论坛。我设法在nginx服务器配置修改中使用友好的url。但是,我需要将旧论坛的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”


这里缺少什么?

您的问题与使用break而不是last有关。从文件中:

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

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

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

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