Как не перенаправить, когда cookie установлен в haproxy?
На своем сайте я перенаправляю пользователей с мобильных устройств на мобильный сайт, используя мой балансировщик нагрузки Haproxy. Я получил некоторые жалобы на это и хочу предложить пользователям ссылку на "классический" портал. Поскольку не все подстраницы доступны в мобильном формате, я должен выбрать, доступен ли контент в первую очередь.
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
Если пользователь входит в каталог верхнего уровня, просто перенаправьте местоположение. Если "мобильный" пользователь нажимает на контент, доступный в мобильном формате, перенаправляют, включая полный путь. Пока все работает отлично.
Теперь я больше не хочу перенаправлять пользователя, когда он / она щелкнул ссылку в мобильной версии, которая устанавливает cookie с именем "CLASSIC".
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