我在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。
答案 0 :(得分:0)
您可以使用http-request's
set-path
和set-query
重写请求。
# 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
来模仿类似的功能。例如:
reqrep ^([^\ :]*)\ /rty/(.*) \1\ /\2
redirect scheme http code 301
注意:我已经跳过了acl部分作为练习(但看起来没问题)。