Si estas reescribiendo urls usando el módulo mod_rewrite y crees que todas tus reglas y expresiones regulares están bien pero no funcionan entonces debes echarle un vistazo las siguientes directivas:
– RewriteLog: Fichero hacia donde se va escribir las operaciones que esta realizando el módulo mod_rewrite.
– RewriteLogLevel: Controla la cantidad de información a escribir en el fichero especificado en RewriteLog. Un valor de 0 deshabilita el volcado de las acciones mod_rewrite mientras que un valor de 9, produce un gran volumen de información. Se recomienda establecer un valor mayor que 2 solo con el propósito de depuración y un valor de 0 para entornos de producción.
Estas 2 directivas tienen contexto configuración del servidor y host virtuales.
Ejemplo:
<VirtualHost *:80> ... RewriteLog "/var/log/httpd/rewrite_log" RewriteLogLevel 5 ... </VirtualHost>
Luego:
# tail -f /var/log/httpd/rewrite_log
A partir de la version 2.4 las directivas RewriteLog y RewriteLogLevel dejaron de existir y su funcionalidad fueron mezclada con la directiva LogLevel la cuál ahora tiene la siguiente sitaxis:
LogLevel [modulo:]nivel [modulo:nivel] ...
Los niveles pueden ir de emerg a trace8 siendo trace8 el nivel que provee mayor información por lo que ahora tendríamos la siguiente configuración
LogLevel debug rewrite:trace3
Lo que significa que tendríamos un nivel debug para los módulos que forman parte del núcleo y un nivel trace3 para el módulo rewrite. Para ver la información volcada por el módulo rewrite puede usar los siguientes comandos
# tail -f /var/log/httpd/error_log |fgrep '[rewrite:'