Al fin luego de mucho luchar hemos hallado la solución de esta cuestión que muchos lectores de este sitio presentan. Si tienes algún detalle que aportar puedes compartir tu información.
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:
- Un campo de encabezado de solicitud HTTP (consulte RFC2616 para obtener más información sobre estos); por ejemplo:
Host
,User-Agent
,Referer
, yAccept-Language
. Se puede usar una expresión regular para especificar un conjunto de encabezados de solicitud. - Uno de los siguientes aspectos de la solicitud:
Remote_Host
– el nombre de host (si está disponible) del cliente que realiza la solicitudRemote_Addr
– la dirección IP del cliente que realiza la solicitudServer_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 elRewriteCond
directiva demod_rewrite
para obtener información adicional sobre cómo hacer coincidir su consulta string.
- 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 anteriormenteSetEnvIf[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
varname
, o!varname
, ovarname=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.
Reseñas y puntuaciones de la guía
Recuerda algo, que tienes autorización de aclarar si te fue preciso.