Nginx带参数重写url而不改变url

问题描述 投票:0回答:1

我使用 Nginx 作为代理服务器,并希望使用某些用户友好的带有参数的 url 来代理传递/重写到带有相应参数的另一个 url。

我期待这个网址: www.mydomain.com/report/bill/p1/p2/p3/p4 使用这个 http://192.168.0.1:9002/reports/servlet?param1=$p1¶m2=$p2¶m3=$p3¶m4=$p4

我尝试了以下方法,但没有成功

location /report/bill/ {
    rewrite ^/report/bill/(.*)$ $1 break;
    rewrite ^/report/bill/(.*)/(.*)$ $2 break;
    rewrite ^/report/bill/(.*)/(.*)/(.*)$ $3 break;
    rewrite ^/report/bill/(.*)/(.*)/(.*)$/(.*)$ $4 break;
    proxy_pass http://192.168.0.1:9002/reports/servlet?param1=$1&param2=$2&param3=$3&param4=$4;
}
nginx url-rewriting nginx-reverse-proxy
1个回答
0
投票

您误解了

rewrite
的工作原理。

但是,

rewrite
能够在一个语句中完成您想要的所有操作:

rewrite ^/report/bill/(.*)/(.*)/(.*)/(.*)$ /reports/servlet?param1=$1&param2=$2&param3=$3&param4=$4 break;
proxy_pass http://192.168.0.1:9002;

我可能不会使用

(.*)
进行捕获,因为它捕获包括
/
在内的所有内容。您可以使用
([^/]+)
来捕获两个
/
之间的所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.