htaccess - ¿Se puede hacer esto? (Módulos If anidados)

htaccess - ¿Se puede hacer esto? (Módulos If anidados)

Estoy intentando redirigir a una URL si se pasa la prueba de un módulo.

Algo como esto (que no parece funcionar para mí).

Quizás esto simplemente no sea posible. ¿Alguien?

<IfModule mod_rewrite.c>
    <ifModule mod_gzip.c>
        RewriteEngine On
        RewriteRule ^/mod_gzip/?$ mod_gzip-is-enabled.php
    </IfModule>
</IfModule>

Respuesta1

Los contenedores anidados <IfModule>no son su problema (sí, esto es posible). (¿Pero es necesario el contenedor exterior <IfModule mod_rewrite.c>?)

Tu problema es elRewriteRule patrón ^/mod_gzip/?$:

RewriteRule ^/mod_gzip/?$ mod_gzip-is-enabled.php

Esto nunca coincidirá en un .htaccesscontexto por directorio, debido al prefijo de barra diagonal en elRewriteRule patrón. Necesitas eliminarlo, así:

RewriteRule ^mod_gzip/?$ mod_gzip-is-enabled.php [L]

Para hacer coincidir una URL solicitada del formulario /mod_gzip/(o /mod_gzip).

En archivos por directorio .htaccess, la ruta URL que elRewriteRule patrónLos partidos en contra son menosprefijo de directorio, que en particular termina con una barra. Por lo tanto, la ruta URL que coincide nunca comienza con una barra. (Esto difiere de cuando las directivas se usan en un contexto de servidor o host virtual).

Además, probablemente deberías incluir la Lbandera en caso de que tengas otras directivas.

información relacionada