2011-11-14 10 views
5

Necesito ejecutar un conjunto de declaraciones RewriteCond si un ENV es verdadero o está definido (si no está definido, entonces se presume falso). He estado tratando de usar:.htaccess prueba si ENV es verdadero o está definido

RewriteCond %{ENV:IS_MOBILE} ^true$ 
RewriteCond ... 

y (no estoy seguro si esto es válido)

RewriteCond %{ENV:IS_MOBILE} !=true 
RewriteCond... 

Pero tampoco parece funcionar. De cualquier manera que puedo hacer esto?

Respuesta

10

He aquí una muestra de la vida real que debe ayudar a encontrar la solución:

Si el anfitrión comienza por "s" o "estática" a continuación, crear una variable de entorno llamada "estático" y ponerlo en "1" :

RewriteCond %{HTTP_HOST} (s|static)\.mysite\.com$ 
RewriteRule (.*) - [QSA,E=STATIC:1] 

entonces lo que usted puede buscar: si mis anfitriones es "estática", entonces si los archivos son considerados como "estática" (img, etc.) y luego se detiene:

RewriteCond %{ENV:STATIC} 1 
RewriteRule (.*)\.(pdf|jpg|jpeg|gif|png|ico)$ - [L] 

Ahora bien, si quiero estar seguro de que tha t la variable no existe, solo verifica si está vacía. Aquí está mi regla justo después de la anterior: se comprueba si la variable no está vacía, y si es así, hay un error = 404 (para simular "no encontrado"):

RewriteCond %{ENV:STATIC} !^$ 
RewriteRule (.*) /404.php [L] 

En su caso si su env no es vaciar supones que es verdad:

RewriteCond %{ENV:IS_MOBILE} !^$ 
RewriteCond... 

En su caso si su env es igual, es exactamente igual a la cadena "true" se supone que es "verdadero":

RewriteCond %{ENV:IS_MOBILE} true 
RewriteCond... 

Espero que esto ayude.

+0

Esto básicamente me indicó mi solución, pero debe tenerse en cuenta que, en algunos casos, Apache eliminará cualquier variable de entorno no estándar, por lo que también tendrá que definir su ENV dentro del host virtual. – Ashley

+0

Ooops Solo estoy trabajando en el entorno vhost, así que no hay problema, pero tienes razón al darte cuenta de esto. Gracias de nuevo. –

Cuestiones relacionadas