Nginx 匹配重定向问题
需求
由于老地址不再维护,需要将请求以一定的格式转到新地址。
例如:
http://xxx/query/123 转到 https://xxx/query.html?no=123
解决方法
配置Nginx
匹配转发就可解决问题。
配置如下:
location ~ /query {
rewrite ^/query/(.*) https://xxx/query.html?no=$1 permanent;
}
这样就可以将监听域名下的/query/123
重定向到/query.html?no=123
更深层次的问题
使用中发现如果参数中123
带有特殊符号,比如有两个/
存在时,重定向过去的参数只会有一个/
.
http://xxx/query/12//3 会重定向到 https://xxx/query.html?no=12/3,少了一个
/
可能是由于location
匹配时,将后面都作为请求地址匹配,自动将//
解析成了/
(待验证)。
可以使用$request_uri
将整个请求链接匹配。
配置如下:
locat