Thank you!
I was too clever to append '/' at the end, without it reqrep works fine.
But further I need not just rewrite but redirect it so that client see rewritten URL:
acl coll path_beg /ABC/collection/
reqrep ^([^\ :]*)\ /ABC/collection/(.*) \1\ /collection/collection_\2
redirect prefix / code 301 if coll
It seems to me that it doesn't work, ie. browser still shows /ABC/collection...
Ul
10.03.2017, 12:45, "Michael Ezzell" <[email protected]>:
On Mar 10, 2017 4:16 AM, "Ульянка Да" <[email protected]> wrote:Update:
reqrep changes requests, but harmfully, that results in error 400 (bad request).
How to debug the harm keeping in mind that traffic is SSLed?SSL isn't really relevant, because your incorrect rewrite is corrupting the request *inside* HAProxy. The request never leaves the proxy. What you need to remember is that you are rewriting a line in a buffer that contains a raw HTTP request.reqrep ^([^\ :]*)\ /ABC/collection/(.*)/ \1\ /collection/collection_\2/You're overlooking the "[space]HTTP/1.x" at the end of the start line.reqrep ^([^\ :]*)\ /ABC/collection/(.*)/(\ HTTP.+)$ \1\ /collection/collection_\2/\3Note that your _expression_ as written also only works at all when the path ends with a trailing slash, which may or may not be what you really want. That behavior is preserved in my example.If you're using HAProxy 1.6 or later, there is a simpler solution to use, which looks something like this:http-request set-path %[path,regsub(^/ABC/collection/,/collection/collection/)] if { path_beg /ABC/collection/ }This also differs from your example, since it does not require a trailing slash in the path but would match and rewrite any path beginning with the pattern shown.

