Descripción: Permite la configuración de variables de entorno en función de las características de la solicitud.
Estado: Base
ModuleIdentifier: setenvif_module
Archivo fuente: mod_setenvif.c

Resumen

los mod_setenvif El módulo le permite establecer variables de entorno internas de acuerdo con si los diferentes aspectos de la solicitud coinciden con las expresiones regulares que especifique. Estas variables de entorno pueden ser utilizadas por otras partes del servidor para tomar decisiones sobre las acciones que se deben tomar, además de estar disponibles para los scripts CGI y las páginas SSI.

Las directivas se consideran en el orden en que aparecen en los archivos de configuración. Por tanto, se pueden utilizar secuencias más complejas, como este ejemplo, que establece netscape si el navegador es mozilla pero no MSIE.

BrowserMatch ^Mozilla netscape
BrowserMatch MSIE !netscape

Cuando el servidor busca una ruta a través de un sub-solicitud como buscar un DirectoryIndex o generando una lista de directorio con mod_autoindex, las variables de entorno por solicitud son no heredado en la subquest. Adicionalmente, SetEnvIf las directivas no se evalúan por separado en la sub-solicitud debido a las fases de API mod_setenvif toma acción en.

Directiva BrowserMatch

Descripción: Establece variables de entorno condicionales al agente de usuario HTTP
Sintaxis:
BrowserMatch regex [!]env-variable[=value] [[!]env-variable[=value]] ...
Contexto: configuración del servidor, host virtual, directorio, .htaccess
Anular: Información del archivo
Estado: Base
Módulo: mod_setenvif

los BrowserMatch es un caso especial de la SetEnvIf directiva que establece variables de entorno condicionadas a la User-Agent Encabezado de solicitud HTTP. Las siguientes dos líneas tienen el mismo efecto:

BrowserMatch Robot is_a_robot
SetEnvIf User-Agent Robot is_a_robot

Algunos ejemplos adicionales:

BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
BrowserMatch MSIE !javascript

Directiva BrowserMatchNoCase

Descripción: Establece variables de entorno condicionadas a User-Agent sin tener en cuenta el caso.
Sintaxis:
BrowserMatchNoCase regex [!]env-variable[=value] [[!]env-variable[=value]] ...
Contexto: configuración del servidor, host virtual, directorio, .htaccess
Anular: Información del archivo
Estado: Base
Módulo: mod_setenvif

los BrowserMatchNoCase directiva es semánticamente idéntica a la BrowserMatch directiva. Sin embargo, proporciona una coincidencia que no distingue entre mayúsculas y minúsculas. Por ejemplo:

BrowserMatchNoCase mac platform=macintosh
BrowserMatchNoCase win platform=windows

los BrowserMatch y BrowserMatchNoCase directivas son casos especiales de SetEnvIf y SetEnvIfNoCase directivas. Las siguientes dos líneas tienen el mismo efecto:

BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot

Directiva SetEnvIf

Descripción: Establece variables de entorno basadas en attributes de la solicitud
Sintaxis:
SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
Contexto: configuración del servidor, host virtual, directorio, .htaccess
Anular: Información del archivo
Estado: Base
Módulo: mod_setenvif

los SetEnvIf La directiva define las variables de entorno basadas en attributes de la solicitud. los attribute especificado en el primer argumento puede ser una de cuatro cosas:

  1. Un campo de encabezado de solicitud HTTP (consulte RFC2616 para obtener más información sobre estos); por ejemplo: Host, User-Agent, Referer, y Accept-Language. Se puede usar una expresión regular para especificar un conjunto de encabezados de solicitud.
  2. Uno de los siguientes aspectos de la solicitud:
    • Remote_Host – el nombre de host (si está disponible) del cliente que realiza la solicitud
    • Remote_Addr – la dirección IP del cliente que realiza la solicitud
    • Server_Addr – la dirección IP del servidor en el que se recibió la solicitud (solo con versiones posteriores a 2.0.43)
    • Request_Method – el nombre del método utilizado (GET, POST, etcétera)
    • Request_Protocol – el nombre y la versión del protocolo con el que se realizó la solicitud (p.ej, “HTTP / 0.9”, “HTTP / 1.1”, etc.)
    • Request_URI – el recurso solicitado en la línea de solicitud HTTP – generalmente la parte de la URL que sigue el esquema y la parte del host sin la consulta string. Ver el RewriteCond directiva de mod_rewrite para obtener información adicional sobre cómo hacer coincidir su consulta string.
  3. El nombre de una variable de entorno en la lista de las asociadas con la solicitud. Esto permite SetEnvIf directivas para comparar con el resultado de partidos anteriores. Solo aquellas variables de entorno definidas anteriormente SetEnvIf[NoCase] Las directivas están disponibles para probar de esta manera. “Anterior” significa que se definieron en un ámbito más amplio (como en todo el servidor) o anteriormente en el ámbito de la directiva actual. Las variables de entorno se considerarán solo si no hubo coincidencia entre las características de la solicitud y no se usó una expresión regular para el attribute.

El segundo argumento (regex) es un expresión regular. Si el regex partidos contra el attribute, luego se evalúa el resto de los argumentos.

El resto de los argumentos dan los nombres de las variables para establecer y, opcionalmente, los valores a los que deben establecerse. Estos toman la forma de

  1. varname, o
  2. !varname, o
  3. varname=value

En el primer formulario, el valor se establecerá en “1”. El segundo eliminará la variable dada si ya está definida, y el tercero establecerá la variable en el valor literal dado por value. Desde la versión 2.0.51, Apache httpd reconocerá apariciones de $1..$9 dentro de valor y reemplazarlos por subexpresiones entre paréntesis de regex. $0 proporciona acceso a todo string emparejado con ese patrón.

SetEnvIf Request_URI ".gif$" object_is_image=gif
SetEnvIf Request_URI ".jpg$" object_is_image=jpg
SetEnvIf Request_URI ".xbm$" object_is_image=xbm
    
SetEnvIf Referer www.mydomain.example.com intra_site_referral
    
SetEnvIf object_is_image xbm XBIT_PROCESSING=1
    
SetEnvIf Request_URI ".(.*)$" EXTENSION=$1

SetEnvIf ^TS  ^[a-z]  HAVE_TS

Los tres primeros establecerán la variable de entorno object_is_image si la solicitud era para un archivo de imagen, y el cuarto establece intra_site_referral si la página de referencia estaba en algún lugar de la www.mydomain.example.com Sitio web.

El último ejemplo establecerá la variable de entorno HAVE_TS si la solicitud contiene encabezados que comienzan con “TS” cuyos valores comienzan con cualquier carácter del conjunto [a-z].

Ver también

  • Variables de entorno en el servidor HTTP Apache, para ejemplos adicionales.

Directiva SetEnvIfExpr

Descripción: Establece variables de entorno basadas en una expresión ap_expr
Sintaxis:
SetEnvIfExpr expr [!]env-variable[=value] [[!]env-variable[=value]] ...
Contexto: configuración del servidor, host virtual, directorio, .htaccess
Anular: Información del archivo
Estado: Base
Módulo: mod_setenvif

los SetEnvIfExpr La directiva define las variables de entorno basadas en un ap_expr. Estas expresiones se evaluarán en tiempo de ejecución y se aplicarán env-variable de la misma manera que SetEnvIf.

SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:imagesvery_big.iso')" iso_delivered

Esto establecería la variable de entorno iso_delivered cada vez que nuestra aplicación intenta enviarlo a través de X-Sendfile

Un ejemplo más útil sería establecer la variable rfc1918 si la dirección IP remota es una dirección privada según RFC 1918:

SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918

Ver también

  • Expresiones en Apache HTTP Server, para una referencia completa y más ejemplos.
  • se puede utilizar para lograr resultados similares.
  • mod_filter

Directiva SetEnvIfNoCase

Descripción: Establece variables de entorno basadas en attributes de la solicitud sin tener en cuenta el caso
Sintaxis:
SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
Contexto: configuración del servidor, host virtual, directorio, .htaccess
Anular: Información del archivo
Estado: Base
Módulo: mod_setenvif

los SetEnvIfNoCase es semánticamente idéntica a la SetEnvIf directiva, y solo se diferencia en que la coincidencia de expresiones regulares se realiza sin distinción entre mayúsculas y minúsculas. Por ejemplo:

SetEnvIfNoCase Host Example.Org site=example

Esto causará site variable de entorno que se establecerá en “example“si el campo de encabezado de la solicitud HTTP Host: fue incluido y contenido Example.Org, example.org, o cualquier otra combinación.