如何redirect请求的scheme(http或https)

我根据acl条件redirect到某个域,但是我希望用户根据请求的scheme/协议以httphttps结束。 我设法做到了这两行显示下面,但我想将它们转换为只有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或函数可以返回httphttps所以我不必重复规则两次? 也许通过某种方式设置一个包含该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