nginx url 参数重写
nginx url prameter rewrite
我们正在迁移论坛软件,希望保留我们的 link 权益。我正在尝试从
重写 nginx 中的 url
/forum/read.php?1,171967,171967#msg-171967
到
/forum/discussion/171967
匹配171967个字符串中的哪个并不重要。我试过:
rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/ redirect;
和其他几个变体都无济于事。
您尝试捕获的消息编号是查询字符串的一部分,因此不是 rewrite
和 [=12] 使用的 规范化 URI 的一部分=] 指令。有关更多信息,请参阅 this document。
如果/forum/read.php
在新论坛软件中不是有效的URI,您可以使用精确匹配location
来隔离它。
在查询字符串上 运行 正则表达式 的最简单方法是使用 if
块。
例如:
location = /forum/read.php {
if ($args ~ ,([0-9]+),) {
return 301 /forum/discussion/;
}
}
有关 if
的使用请参阅 this caution。
我们正在迁移论坛软件,希望保留我们的 link 权益。我正在尝试从
重写 nginx 中的 url/forum/read.php?1,171967,171967#msg-171967
到
/forum/discussion/171967
匹配171967个字符串中的哪个并不重要。我试过:
rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/ redirect;
和其他几个变体都无济于事。
您尝试捕获的消息编号是查询字符串的一部分,因此不是 rewrite
和 [=12] 使用的 规范化 URI 的一部分=] 指令。有关更多信息,请参阅 this document。
如果/forum/read.php
在新论坛软件中不是有效的URI,您可以使用精确匹配location
来隔离它。
在查询字符串上 运行 正则表达式 的最简单方法是使用 if
块。
例如:
location = /forum/read.php {
if ($args ~ ,([0-9]+),) {
return 301 /forum/discussion/;
}
}
有关 if
的使用请参阅 this caution。