Come eseguire il debug di Apache mod_rewrite

Ho due problemi principali con mod_rewrite:

1) Non vi sono errori significativi segnalati quando ho una regola non valida

inserisci la descrizione dell'immagine qui

2) Per testare in modo affidabile ogni modifica, devo cancellare la cache di Chrome. Questa non è scienza missilistica, ma devo premere Ctrl + Maiusc + Canc, quindi fare clic su OK, quindi chiudere la finestra e ricaricare.

Mi piacerebbe vedere se qualcuno dei guru fosse disposto a condividere i propri segreti per gestire in modo efficiente il codice mod_rewrite.

Un trucco è quello di triggersre il registro di riscrittura. Per accenderlo, prova queste righe nella configurazione principale di apache o nel file di host virtuale corrente ( non in .htaccess ):

 RewriteEngine On RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3 

Dal momento che le direttive di Apache httpd 2.4 mod_rewrite RewriteLog e RewriteLogLevel sono state completamente sostituite dalla nuova configurazione di registrazione per modulo.

 LogLevel alert rewrite:trace6 

La direttiva LogRewrite menzionata da Ben non è più disponibile in Apache 2.4. È necessario invece utilizzare la direttiva LogLevel. Per esempio

 LogLevel alert rewrite:trace6 

Vedi http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

Per la risoluzione dell’URL di base, utilizzare un programma di raccolta da riga di comando come wget o curl per eseguire il test, anziché un browser manuale. Quindi non è necessario cancellare alcuna cache; basta freccia e Inserisci in una shell per eseguire nuovamente i recuperi test.

C’è il tester htaccess .

Mostra quali condizioni sono state testate per un determinato URL, quali hanno soddisfatto i criteri e quali regole sono state eseguite.

Sembra avere alcuni problemi, però.

Basandoti sulla risposta di Ben, potresti fare quanto segue quando esegui apache su Linux (Debian nel mio caso).

Prima crea il file rewrite-log.load

/etc/apache2/mods-availabe/rewrite-log.load

 RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 3 

Quindi entra

$ a2enmod rewrite-log

seguito da

$ service apache2 restart

E quando hai finito con il debug delle tue regole di riscrittura

$ a2dismod rewrite-log && service apache2 restart