Apache SetEnvIf não correspondendo ao Request_Uri

3

condição simples, que nunca corresponde e define variável:

SetEnvIf Request_URI "^/path/to/something*" access_granted

Verificar o URI usando PHP está fornecendo uma string correta, no entanto a variável nunca é definida.

echo getenv('Request_URI'); --> /path/to/something
echo getenv('access_granted'); --> <<empty>>

Simples assim, mas ainda e sempre falhando.

Atualização: o ponto interessante é que eu posso conseguir access_granted = 1 por string:

SetEnvIf Request_URI "^/path/*" access_granted

/path também é RewriteBase - talvez esteja conectado de alguma forma, eu não sei

    
por Ivan 10.04.2014 / 16:01

4 respostas

3

Segundo argumento para SetEnvIf é suposto ser regexp, então deve ser lido como:

SetEnvIf Request_URI ^/path/to/something.* access_granted

sua segunda tentativa:

 SetEnvIf Request_URI "^/path/*" access_granted

funciona porque na verdade você tem 0 ou mais símbolos "/" seguindo /path

Em outras palavras, você tentou usar shell globs onde o regexp é esperado.

    
por 11.04.2015 / 08:16
3

O problema que você está enfrentando talvez seja causado por mod_rewrite, conforme explicado . Regras de reescrita são aplicadas antes de aplicar setenv, de modo que o pedido reescrito seja passado para ele. Tente definir a variável env na reescrita.

    
por 09.08.2015 / 13:43
0

Solução simples. Request_URI não é o nome da variável de ambiente, você está configurando uma variável chamada access_granted .

    
por 10.04.2014 / 16:50
0

Eu sei que é um tópico antigo, mas me deparei com isso na minha pesquisa atual, talvez outros tenham problemas relacionados ...

Para mim, o código a seguir funcionou bem e a expressão foi correspondida depois de reescrever!

URL: www.example.de/lockthissite /

código .htaccess:

SetEnvIfNoCase Request_URI ^/lockthissite/$ SECURED=yes

AuthType Basic 
AuthName "restricted access" 
AuthUserFile /path/to/my/.htpasswd 
Require valid-user 
Satisfy any 
Order allow,deny 
Allow from all
Deny from env=SECURED
    
por 27.09.2017 / 18:01