nginx url prameter rewrite

时间:2018-05-18 23:33:22

标签: nginx url-rewriting nginx-location

我们正在迁移论坛软件,并希望保留我们的链接资产。我试图从

重写nginx中的网址
/forum/read.php?1,171967,171967#msg-171967

/forum/discussion/171967

它匹配的171967字符串中的哪一个无关紧要。我试过了:

rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/$2 redirect;

以及其他一些变化无济于事。

1 个答案:

答案 0 :(得分:0)

您尝试捕获的消息号是查询字符串的一部分,因此不属于rewritelocation指令使用的规范化URI 的一部分。有关详情,请参阅this document

如果/forum/read.php不是新论坛软件中的有效URI,您可以使用完全匹配location来隔离它。

在查询字符串上运行正则表达式的最简单方法是使用if块。

例如:

location = /forum/read.php {
    if ($args ~ ,([0-9]+),) {
        return 301 /forum/discussion/$1;
    }
}

有关使用if的信息,请参阅this caution