前言
由于某个API的特殊需求,在url中会出现两次?
,例如:
https://api.cloudraft.cn/?https://api.cloudflare.com/client/v4/zones/03bfeae5bfad300000000563011154cb/dns_records?&per_page=10&page=1
这种时候如果要在nginx中改写会自动把这个问号给去掉,变成:
https://api.cloudraft.cn/?https://api.cloudflare.com/client/v4/zones/03bfeae5bfad300000000563011154cb/dns_records&per_page=10&page=1
这种时候用就需要用nginx改写成转义后的符号了...
解决方案
#REWRITE-START rewrite ^/client/v4/(.*)?(.*)$ https://api.cloudraft.cn/?https://api.cloudflare.com/client/v4/$1%3F$2 redirect; #REWRITE-END
讲解
rewrite
声明重写动作;^/client/v4/
匹配路径前面的内容;(.*)
通配符,代表字符串变量1;?
匹配问号;(.*)$
通配符结尾,代表字符串变量2;https://api.cloudraft.cn/?https://api.cloudflare.com/client/v4/
替换2中的内容;$1
替换3中的字符串;%3F
是?
的转义符;$2
替换5中的字符串;redirect;
声明302重定向。