2011-04-30 16 views
8

Mi alojamiento tiene múltiples implementaciones de mi sitio (desarrollo, etapa, producción). ¿Cómo puedo agregar encabezados HTTP Auth en mi archivo htaccess si y solo si la variable de entorno que establecen es igual a 'dev'? (lo que significa que establecieron una variable llamada SITE_ENVIRONMENT que puede ser dev, stage o prod según el sitio al que estás accediendo.Requiere condicionalmente autenticación HTTP según apache env variable

PD. Estoy familiarizado con la necesidad de autorización de htaccess de manera general, pero estoy totalmente .. pierde cuando se trata de evaluar las variables o escribir un bloque basado en el resultado

+0

pregunta relacionada: * [Cómo hacer contraseña .htaccess condicional proteger] (http://stackoverflow.com/q/5252330/195835) * –

Respuesta

0

no estoy seguro de que esto es posible

Theoreticaly, puede utilizar:

RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$ 

para determinar qué entorno estás adentro, pero yo puedo No piense en cómo escribir RewriteRule para forzar una autenticación básica ... a menos que lo redireccione a otra página que maneje la autenticación básica y restablezca la variable SITE_ENVIRONMENT a "dev-authenticated" o algo así.

+1

me confirmó esto mediante el chat con algunos desarrolladores de Apache. No hay forma de escribir un RewriteRule para desencadenar una autenticación básica, por lo que tendrás que pensar en otro enfoque. – iandouglas

+0

ah, ya veo, gracias por la respuesta. Después de publicar esto, reconsideré mi enfoque, y dado que los diferentes entornos se implementan desde un repositorio svn, acabo de crear una rama de sitio de desarrollo. – Jay

16

Puede usar SetEnvIf para que el patrón coincida con el dominio y determine qué entorno usar.

SetEnvIfNoCase Host ^dev.domain.com$ is_on_dev_site 

AuthType Basic 
AuthName "Protected Login" 
AuthUserFile /path/to/.htpasswd 
AuthGroupFile /dev/null 
Require valid-user 
Deny from env=is_on_dev_site 
#allow something like API usage to bypass 
SetEnvIf Request_URI "(/api/.(.*))$" allow 
Order deny,allow 
Allow from env=allow 
Satisfy any 

hombre: http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html

Cuestiones relacionadas