我有一条如下规则:
redirect scheme https code 301 if { hdr_end(Host) -i mydomain.live otherdomian.org } !{ ssl_fc }
但我希望规则忽略 sub1.otherdomain.org 和 sub2.otherdomain.org
我想做类似的事情:
redirect scheme https code 301 if { hdr_end(Host) -i mydomain.live otherdomian.org } unless { hdr_beg(host) -i sub1 sub2 } !{ ssl_fc }
但是我的语法不正确,我想我只需要以某种方式结合 if 和 except 。
我该如何实现这个目标?
答案1
为了清晰起见添加了换行符:
redirect scheme https code 301
if { hdr_end(Host) -i .mydomain.live .otherdomian.org }
!{ hdr_beg(host) -i sub1 sub2 }
!{ ssl_fc }
用通俗的语言来说,情况是这样的:
if (a) and (not (b)) and (not (c))
if
并且unless
只能用在表达式的开头。
答案2
acl a1 hdr_beg(host) -i sub1.otherdomain.org sub2.otherdomain.org
acl a2 hdr_end(Host) -i mydomain.live otherdomain.org
redirect scheme https code 301 if !a1 a2