Cómo depurar htaccess rewrite script

Me preguntaba cómo crear y depurar este tipo de script que puede convertirse en un poco dolor de cabeza si no está acostumbrado a escribirlos (como yo).

¿Usas la herramienta para crearlos?

¿Algún consejo para depurar lo que sucede en lugar de simplemente crear una estructura local y ver qué está sucediendo en el navegador?

Nota para los lectores: la respuesta anterior ya no funciona .

A partir de la versión 2.4, Apache ya no permite las directivas RewriteLogLevel y RewriteLog . Ahora están todos incluidos con la única directiva LogLevel (consulte la documentación de Archivos de registro ), que admite niveles de registro específicos del módulo con prefijos y constantes de trace[1-8] . Para establecer el nivel más alto de registro específicamente para el módulo de reescritura, ahora usa lo siguiente:

 LogLevel warn rewrite:trace8 
  1. Puede usar cualquier herramienta de prueba de expresiones regulares para ayudarlo a probar sus patrones con las URL (estoy usando “The Regex Coach” – aplicación de Windows). Esto solo te ayudará con el patrón: ya deberías conocer la lógica / flujo general de cómo funciona la reescritura.

  2. Para DEPURAR debes poder editar el archivo de configuración de Apache – usa RewriteLogLevel 9 y RewriteLog /path/to/rewrite.log para ver los detalles exactos de lo que está sucediendo durante la reescritura de URL (porque es una configuración de servidor tendrás que reiniciar Apache tener nueva configuración de servidor aplicada).

    Necesita el nivel 9 si desea depurar una regla problemática. Nivel 3 o cualquier otro valor bastante bajo solo le mostrará información general sobre lo que está sucediendo sin entrar en detalles.

    No use el nivel 9 en el servidor ocupado / de producción, ya que puede generar un registro enorme en pocos segundos.

  3. Si necesita hacer 301 redireccionamientos (permanentes), haga 302 en su lugar durante un período de prueba (hasta que esté satisfecho con la regla y los resultados) luego cambie a 301) ya que los navegadores modernos hacen 301 redirecciones de memoria caché … por lo que puede terminar en una situación frustrante cuando ha cambiado por completo la regla (o incluso la ha eliminado), pero el navegador sigue redirigiendo. La única cura en ese caso: borrar la caché del navegador y reiniciar.

Puede establecer la directiva RewriteLog en su configuración de virtualhost. Escribirá la información necesaria en el archivo especificado por usted.

 RewriteLog "/usr/local/var/apache/logs/rewrite.log" 

Además, use la directiva RewriteLogLevel para controlar la cantidad de registros

 RewriteLogLevel 3 

leer de parte a parte