我根据acl条件redirect到某个域,但是我希望用户根据请求的scheme/协议以http或https结束。 我设法做到了这两行显示下面,但我想将它们转换为只有1行:
http-request redirect code 301 location http://www.example.com%[url] if acl_whatever !{ ssl_fc } http-request redirect code 301 location https://www.example.com%[url] if acl_whatever { ssl_fc }
理想情况下,我想redirect到%[scheme]://www.example.com%[url]但%[scheme]不存在。
有一个variables或函数可以返回http或https所以我不必重复规则两次? 也许通过某种方式设置一个包含该scheme的variables,或者使用%[ssl_fc]值为0或1?
你可以使用http-request set-var和%[var(name)]来做到这一点:
http-request set-var(req.scheme) str(https) if { ssl_fc } http-request set-var(req.scheme) str(http) if ! { ssl_fc } http-request redirect code 301 location %[var(req.scheme)]://www.example.com%[url] if acl_whatever