![我怎样才能让 haproxy 重写 url,同时保留路径中间的变量?](https://linux22.com/image/719873/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9%20haproxy%20%E9%87%8D%E5%86%99%20url%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E7%95%99%E8%B7%AF%E5%BE%84%E4%B8%AD%E9%97%B4%E7%9A%84%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我正在尝试重定向一个类似这样的 URLhttp://主机/api/getThingByID/12345到http://主机/api/地址/12345/getThing
不幸的是,regsub() 不支持捕获组。我打算尝试通过调用两次来解决这个问题,一次将 URL 重写为 id,然后再次替换/$
为/getThing
,但我不知道如何在一个重定向规则中两次调用该函数。
答案1
经过多次试验,我想到了一个解决方案。你可以将 regsub() 连续链接起来,规则如下:
http-request redirect code 301 location %[url,regsub(^/api/getThingByAddr,/api/addr/,),regsub($,/getThing,)] if { path_beg /api/getThingByAddr }