HAProxy reqrep在最后一次反向引用后显示文本

时间:2017-11-14 10:08:40

标签: haproxy

我正在尝试将指向旧应用程序的链接重定向到新应用程序。新应用程序无法处理直接链接,因此我想将它们指向搜索,但需要引用此搜索才能正常工作。我尝试了以下配置,但如果我这样做,则会收到400 Bad Request:

reqrep ^([^\ :]*)\ /\?pdf=(.*)  \1\ /newpdf?search=%22\2%22

我最接近的是在最后一次反向引用后删除所有内容,如下所示:

reqrep ^([^\ :]*)\ /\?pdf=(.*)  \1\ /newpdf?search=%22\2

在最后一次反向引用之后是否无法放置任何内容?

1 个答案:

答案 0 :(得分:1)

问题是在反向引用后没有文字。你忽略了你操纵的字符串的本质:

GET /page?pdf=foo HTTP/1.1 <<< here

在URI之后有一个空格和HTTP版本。您正在\2内捕获该内容。将其分隔为\3,捕获一个空格和一个或多个非空格字符,锚定到最后。

reqrep ^([^\ :]*)\ /\?pdf=(.*)(\ [^\ ]+)$  \1\ /newpdf?search=%22\2%22\3

更好的解决方案是使用提取和http-request请求修改功能来操作查询字符串。