基于URL的HAProxy路由

时间:2017-12-18 00:26:59

标签: redirect haproxy

场景:如果网址为http://domainhttp://domain/web,则不应存在重定向。对于其他任何内容,请说http://domain/abchttp://domain/xyz,应该重定向到http://domain2

这是我尝试过的,但它只适用于http://domain/web。如果网址为http://domain,则仍会重定向到http://domain2

acl is_root path -i
acl missing_slash path_reg ^/*/[^/]*$$  
acl isweb path_beg /web
http-request set-header X-Location-Path %[capture.req.uri] if  !isweb !is_root !missing_slash
http-request replace-header X-Location-Path [^/]+/(.*) \1 if  !isweb !is_root !missing_slash
http-request redirect code 301 location https://www.domain2.com%[hdr(X-Location-Path)] if  !isweb !is_root !missing_slash

1 个答案:

答案 0 :(得分:0)

匹配字符串/

acl is_root path -m str /

请求URI实际上永远不会是HTTP中的空字符串。无论地址栏是否实际显示主机名后面的GET / HTTP/1.1,浏览器都会始终发送/