Estou tentando controlar o apache com base em valores de cookie, mas parece que não consigo usar SetEnvIf
para trabalhar com HTTP_COOKIE
. Eu reduzi isso a uma lógica simples para isolar o problema e ser fácil de testar.
Apache 2.2.22 no Ubuntu 12.04.1 LTS.
O que estou usando é:
Header set Set-Cookie "cookie1=1"
SetEnvIf HTTP_COOKIE "cookie1=1" is_cookie1
Header set Set-Cookie "cookie2=2" env=is_cookie1
Usando a guia "Recursos do Chrome", estou inspecionando os cookies da página. O que eu espero ver é:
- Carregamento da primeira página,
cookie1=1
exists
- Segundo (e subseqüente) carregamento de páginas,
cookie1=1
e cookie2=2
existem.
Em vez disso, tudo que recebo é cookie1
:
Seeuadicionaralinha:
SetEnvIfRemote_Addr^192\.168\.is_cookie1
Entãocookie2
édefinidoimediatamente,comoeuesperava,entãoaúltimalinhaHeader...env=is_cookie1
pareceestarbem.
EutambémtenteiverificarseHTTP_COOKIEestavasendoconfiguradocorretamente:
RewriteRule^/test/$/test/%{HTTP_COOKIE}[R=302,L]
Agora,irpara/test/
éredirecionadoimediatamentepara/test/cookie1=1%3b%20cookie2=2
comoeuesperavae,portanto,HTTP_COOKIE
pareceestardefinidocorretamente.
EutambémtenteiváriasvariaçõesdeSetEnvIfenadaparecefuncionar:
SetEnvIfHTTP_COOKIE"^cookie1=1$" is_cookie1
SetEnvIf HTTP_COOKIE ^cookie1=1$ is_cookie1
SetEnvIf HTTP_COOKIE "^.+$" is_cookie1
SetEnvIf HTTP_COOKIE ^.+$ is_cookie1
.. embora
SetEnvIf HTTP_COOKIE ^.*$ is_cookie1
define o cookie2 imediatamente (no primeiro carregamento) em qualquer situação (o que ... não é útil, mas pelo menos me diz que esta linha faz alguma coisa ).
O que estou fazendo de errado?