Вы опускаете /
в начале вашего пути, поэтому он не совпадает. А именно, изменив текстовую карту на следующую:
#foo.textmap
/path https://bar.com/path
Результаты:
> curl -I foo.com/path
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://bar.com/path
В случаях, когда путь не совпадает с чем-то на вашей карте, вы, вероятно, захотите сделать что-то кроме отправки пустого местоположения в 301. Например, вот модификация, которая перенаправит на URL-адрес по умолчанию, если путь не был найдено:
# redirect
http-request redirect location %[path,lower,map(/etc/haproxy/maps/foo.textmap,https://bar.com/default)] code 301 if { hdr(host) -i foo.com }
В противном случае, если вы хотите перенаправить только при наличии совпадения, вы бы написали более сложный acl для сопоставления домену, и если он существует на вашей карте.
http-request redirect location %[path,lower,map(/etc/haproxy/maps/foo.textmap)] code 301 if { hdr(host) -i foo.com } { path,lower,map_str(/etc/haproxy/maps/foo.textmap) -m found }