Fredrik
Fredrik

Reputation: 27

HA Proxy rewrite and redirect

Trying to do a rewrite and redirect. I've been trying this, it works to some extent but not 100% what I want it to do

acl old url_beg /site/ab http-request redirect location /new/%[query] if old

the url can be for example

I am looking to grab the bold marked part and simply redirect the user to https//host/new/boldmarkedpart

Any string that comes after the bold marked part can be trashed. For example "/asdajshdjasd" in the last example.

Any idea how to accomplish this? Thank you!!

Upvotes: 0

Views: 523

Answers (1)

tbielaszewski
tbielaszewski

Reputation: 1084

If i understand correctly, you want to split the path part of url and get its 4th part. In string foo1/foo2/foo3/foo4/foo5 you want only foo4. This should work for you:

acl old path_beg /site/ab
http-request redirect location /new/%[path,field(4,/)] if old

It may be confusing that you want 3rd directory from path and here you take 4th word, but that's because when you split /foo2/foo3/foo4/foo5 by / then the first word is empty. field converter is documented here: https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.1-field

Other notes:

  • %[query] would return the query part of url, which is everything after ? character and you don't have query part at all in your examples.
  • url in my tests had schema://hostname:port/path, so testing acl old url_beg /site/ab never matched, path is for that

Upvotes: 1

Related Questions