Nginx rewrite地址不自动添加参数

Nginx rewrite地址不自动添加参数

原始请求地址:

www.example.com/index.php?r=mobile/receive/index

重写请求地址:

www.example2.com/newindex.php?r=mobile2/receive2/index2

这是我自己的配置:

if ($args ~* "^r=mobile/receive/index") {
    rewrite ^ "http://www.example2.com/newindex.php?r=mobile2/receive2/index2";
}

但改写后的地址结尾是这样的:

http://www.example2.com/index.php?r=mobile2/receive2/index2&r=mobile/receive/index

看到我的问题了吗?重写的地址会自动添加,但这不是我想要的。相同的参数键会导致封底覆盖正面。

答案1

为了防止原始查询字符串被附加到目标 URL,您需要?在重写 URL 的末尾添加一个额外的问号 ( )。例如:

rewrite ^ http://www.example2.com/newindex.php?r=mobile2/receive2/index2?;

参考:
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

相关内容