Redirect Haproxy重定向规则路径元素变量不工作

Redirect Haproxy重定向规则路径元素变量不工作,redirect,nginx,haproxy,Redirect,Nginx,Haproxy,我在nginx中有以下重定向规则 rewrite ^/rty/(.*)$ example.com/$1?lead 我正试图在haproxy做同样的事情 acl uri_lc path_reg ^/lc/(.*)$ http-request redirect location example.com/$1?lead code 301 if uri_lc 重定向正在工作,但路径元素变量$1似乎不适用于haproxy。您可以使用设置路径和设置查询来重写请求 # remove /rty part

我在nginx中有以下重定向规则

rewrite ^/rty/(.*)$ example.com/$1?lead
我正试图在haproxy做同样的事情

acl uri_lc path_reg ^/lc/(.*)$
http-request redirect location example.com/$1?lead  code 301 if uri_lc

重定向正在工作,但路径元素变量$1似乎不适用于haproxy。

您可以使用
设置路径和
设置查询来重写请求

# remove /rty part
http-request set-path %[path,regsub(/rty,,g)] 

# set query string
http-request set-query lead 

# redirect -  this is actually a pretty tricky way to redirect
# to the modified request without giving path
http-request redirect scheme http code 301

# empty prefix could be use as well
# http-request redirect prefix ' ' code 301
在早于1.6的版本中,您可以使用来模拟类似的功能。例如:

reqrep ^([^\ :]*)\ /rty/(.*)     \1\ /\2
redirect scheme http code 301
注意:作为练习,我跳过了acl部分(但看起来还可以)