我们正在迁移论坛软件,并希望保留我们的链接资产。我试图从
重写nginx中的网址/forum/read.php?1,171967,171967#msg-171967
到
/forum/discussion/171967
它匹配的171967字符串中的哪一个无关紧要。我试过了:
rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/$2 redirect;
以及其他一些变化无济于事。
答案 0 :(得分:0)
您尝试捕获的消息号是查询字符串的一部分,因此不属于rewrite
和location
指令使用的规范化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。