Como escapar de espaços no valor Apache SetEnvIf

4

Estou tentando usar SetEnvIf (Apache2, por meio de um arquivo .htaccess) para armazenar uma variável de ambiente em que o valor a ser atribuído à variável precisa conter espaços. Por exemplo, tentando definir a variável de ambiente "AUTH_KEY" para ter o valor "a b":

SetEnvIf Request_URI "^/example" AUTH_KEY="a\ b"

Não importa o que eu faça, não consegui escapar do espaço no valor - o espaço age como um delimitador entre env vars a ser criado (no acima, AUTH_KEY é criado com o valor '"a \' e um segunda env var é criada chamada 'b' '). Eu tentei aspas simples também sem sorte.

Como faço para escapar do caractere de espaço?

    
por Alex B 04.04.2013 / 19:06

2 respostas

5

No final, descobri por mim mesmo ...

SetEnvIf Request_URI "^/example" "AUTH_KEY=a b"

… o que parece estranho, mas funciona. Configura corretamente AUTH_KEY para o valor a b

Espero que isso possa salvar o tempo de outra pessoa no futuro.

Os detalhes: - Eu não sou um programador C, mas no Google encontrei o mod_setenvif.c listado em link

Uma função é chamada na linha 405 ( ap_getword_conf , para a qual encontrei detalhes no link ) que parece analisar strings, delimitadas por espaços em branco (mas opcionalmente encapsuladas entre aspas e aceitando o uso de caracteres de escape).

Eu notei que isso aconteceu antes que a sub-string retornada pela função acima fosse dividida pelo caractere '=' (linha 411, pela função ap_getword). Assim, aspas em torno do par key=value , em vez de apenas o valor.

    
por 05.04.2013 / 15:44
0

Tente usar em vez de SetEnvIf Request_URI "^/example" AUTH_KEY="a\sb" . aqui representa o espaço.

    
por 04.04.2013 / 20:33