我正在尝试使用 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
为路径中的一个组件,然后更改应用程序以添加冒号。