rewritecond - rewriterule htaccess apache
Cómo depurar Apache mod_rewrite (5)
La directiva LogRewrite mencionada por Ben ya no está disponible en Apache 2.4. Necesita usar la directiva LogLevel en su lugar. P.ej
LogLevel alert rewrite:trace6
Ver http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Tengo dos problemas principales con mod_rewrite:
1) No se informa ningún error significativo cuando tengo una regla inválida
2) Para probar cada modificación de manera confiable, tengo que borrar la memoria caché de Chrome. Esto no es ciencia espacial, pero tengo que presionar Ctrl + Shift + Eliminar, luego hacer clic en Aceptar, luego cerrar la ventana y volver a cargar.
Me gustaría ver si alguno de los gurús está dispuesto a compartir sus secretos para administrar eficientemente el código mod_rewrite.
Para la resolución básica de URL, use un buscador de línea de comandos como wget
o curl
para realizar las pruebas, en lugar de un navegador manual. Entonces no tienes que borrar ningún caché; solo la flecha hacia arriba y Enter in a shell para volver a ejecutar las búsquedas de prueba.
Según la respuesta de Ben, podría hacer lo siguiente cuando ejecute Apache en Linux (Debian en mi caso).
Primero crea el archivo rewrite-log.load
/etc/apache2/mods-availabe/rewrite-log.load
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
Luego ingrese
$ a2enmod rewrite-log
seguido por
$ service apache2 restart
Y cuando terminaste con la depuración de tus reglas de reescritura
$ a2dismod rewrite-log && service apache2 restart
Muestra qué condiciones se probaron para una determinada URL, cuáles cumplieron los criterios y qué reglas se ejecutaron.
Sin embargo, parece tener algunas fallas.
Un truco es activar el registro de reescritura. Para activarlo, pruebe estas líneas en su configuración principal de apache o en su archivo de host virtual actual ( no en .htaccess
):
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
Desde Apache httpd 2.4 mod_rewrite Directivas RewriteLog y RewriteLogLevel ha sido completamente reemplazado por la nueva configuración de registro por módulo.
LogLevel alert rewrite:trace6