nginx 重写在请求中插入 url:被转义

nginx 重写在请求中插入 url:被转义

我正在尝试使用 rewrite 重写 URL。我想将 URL 插入到请求 uri 中,但 http: 中的 : 被转义,我的应用程序永远无法获得正确的 URL。如何在重写时防止 : 被转义?

rewrite /(.*)url(.*) /$1http://example.com$2 break;

导致;

/abc/http%3A//example.com/myfile.html

而它应该是;

/abc/http://example.com/myfile.html

答案1

URL 的路径部分不能包含未转义形式的冒号,这就是 nginx 对其进行转义的原因。冒号的唯一有效位置是分隔 URL 的协议和域或用户/域部分。

您需要将其http://从路径组件中移除,在应用程序中将其取消转义,或者仅将http/添加https为路径中的一个组件,然后更改应用程序以添加冒号。

相关内容