当haproxy中设置cookie时如何不重定向?

当haproxy中设置cookie时如何不重定向?

在我的网站上,我使用我的哈普罗西loadbalancer。我收到了一些投诉,并希望为用户提供返回“经典”门户的链接。由于并非所有子页面都以移动格式提供,因此我必须先选择内容是否可用。

    acl path_root path /
    acl path_mobile path_beg /faq
    acl site_classic hdr_sub(cookie) CLASSIC=
    acl ua_smartphone hdr_reg(User-Agent) -i iphone ipod android bada
    redirect location http://s.tld if path_root ua_smartphone !site_classic
    redirect prefix http://s.tld if path_mobile ua_smartphone !site_classic

如果用户进入顶级目录,只需重定向位置即可。如果“移动”用户点击了以移动格式提供的内容,则重定向(包括完整路径)。到目前为止,一切都运行良好。

现在,当用户点击移动版本中设置名为“CLASSIC”的 cookie 的链接时,我不想再重定向用户。

Cookie 设置正确,工作正常。如果我写入以下内容,重定向将起作用:

    acl site_classic hdr_sub(cookie) CLASSIC=
    redirect location http://s.tld if site_classic

我还尝试了所有可以想到的方法来检查 cookie,例如 CLASSIC=1 CLASSIC=true CLASSIC=portal 等,并在代码中

    acl site_classic hdr_sub(cookie) CLASSIC
    acl site_classic hdr_sub(cookie) CLASSIC=
    acl site_classic hdr_sub(cookie) CLASSIC=1
    acl site_classic hdr_sub(cookie) CLASSIC=true
    acl site_classic hdr_sub(cookie) CLASSIC=portal

为什么它不起作用?

感谢您的帮助!

答案1

我认为您不能多次使用相同的 ACL 名称,请尝试使用如下名称:

acl site_classic1 hdr_sub(cookie) CLASSIC
acl site_classic2 hdr_sub(cookie) CLASSIC=
acl site_classic3 hdr_sub(cookie) CLASSIC=1
acl site_classic4 hdr_sub(cookie) CLASSIC=true
acl site_classic5 hdr_sub(cookie) CLASSIC=portal

redirect location http://s.tld if site_classic1 or site_classic2 or site_classic3 or site_classic4 or site_classic5

相关内容