在haproxy中设置cookie时如何不redirect?

在我的网站上,我使用Haproxy负载均衡器将用户通过移动设备redirect到移动网站。 我收到了一些抱怨,并希望为用户提供一个链接到“经典”门户。 由于并非所有子页面都以移动格式提供,因此我必须select内容是否可用。

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 

如果用户正在进入顶层目录,则只需redirect该位置。 如果“移动”用户点击包含完整path的移动格式redirect的内容。 迄今为止,这一切正常。

现在,当他/她点击移动版本中设置名为“CLASSIC”的cookie的链接时,我不希望redirect用户。

该cookie设置正确,工作正常。 如果我写下面的redirect工程:

  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 

为什么它不起作用?

感谢您的帮助!

我想你不能多次使用相同的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