Estoy tratando de agregar una declaración condicional usando la directiva If de Apache en mi archivo .htaccess.
Me he referido a esta página http://httpd.apache.org/docs/trunk/mod/core.html#if pero no explica mucho / da muchos ejemplos. Dos ejemplos incompletos que da son:
<Si% {REQUEST_METHOD} EN OBTENER, CABEZA, OPCIONES>
y
<If "$ req {Host} = ''">
Así que intenté agregar esto a mi archivo .htaccess:
<Si% {SERVER_PORT} EN GET, HEAD, OPTIONS> # nada aquí todavía </If>
Pero sigo recibiendo el error 500 cuando intento cargar la página. Esto está en mi instalación local, y estaba funcionando bien anteriormente (o si elimino ese código). Creo que lo he AllowOverride All
configurado globalmente, y el contexto de la directiva If debería permitir que esté presente en .htaccess ("Contexto: configuración del servidor, host virtual, directorio, .htaccess").
¿Puede alguien darme algunos ejemplos de cómo usar correctamente la directiva <If>, o alguna orientación sobre por qué no funciona para mí?
¡Gracias!
SERVER_PORT
inGET,HEAD,OPTIONS
no tiene ningún sentido (SERVER_PORT
va a ser el número de puerto en el que se recibió la solicitud).Respuestas:
La
<If>
directiva solo está disponible en Apache 2.4+ y no 2.2 o anterior.http://httpd.apache.org/docs/2.4/mod/core.html#if
Documentación no presente en 2.2:
http://httpd.apache.org/docs/2.2/mod/core.html#if
fuente
<If>
solo está disponible en Apache 2.4+, así que primero asegúrate de tener esa versión.Ejemplos
Alternativas a
<If>
Hay algunas otras soluciones para hacer declaraciones condicionales en Apache 2.2 si todavía está atascado con eso.
Puede establecer variables de entorno a través de:
SetEnvIf
RewriteMatch
Entonces puede realizar declaraciones condicionales usando
Ejemplo:
fuente
<IfDefine>
directiva solo se analiza al inicio yparameter-name
solo se puede pasar mediante una solicitud de comando usandohttpd -Dx=y