Questo è un caso di "fai una domanda e rispondi da solo", che sto pubblicando a beneficio di chiunque abbia lo stesso problema.Come posso eseguire il debug delle regole mod_rewrite?
Ho avuto alcuni problemi nel debug di un set di regole mod_rewrite in un file .htaccess su un server condiviso, dove non potevo nemmeno accedere ai log degli errori di Apache. Ho trovato un modo pulito per eseguire il debug di loro, che è questo:
Scrivi un breve script che stampa semplicemente è querystring variabili. per esempio. in PHP:
<?='<pre>',htmlentities(print_r($_GET,true)),'</pre>'?>
è tutto ciò che serve.
Diciamo che si chiama questo script "show.php" e lo si inserisce in/public_html. Poi, nel file .htaccess, identificare il punto nel vostro set di regole che si pensa possa essere la causa del problema, e inserire questa regola:
RewriteRule (.*) /show.php?url=$1 [END]
L'effetto è lo stesso che l'inserimento di una dichiarazione stampa in un regolare programma. Ti farà sapere che (a) hai raggiunto quel punto nel set di regole, e (b) che cos'è l'URL riscritto corrente.
Non è così veloce come un vero strumento di debug, ma fa il lavoro.
Se si utilizza Apache < 2.3.9, sarà necessario utilizzare [L]
anziché [END]
. In tal caso, qualcosa da tenere in considerazione è che il tuo set di regole non dovrebbe tentare di riscrivere "/show.php" in qualcos'altro. Se questo è un problema, è possibile risolvere il problema con l'aggiunta di questa regola al vertice:
RewriteRule ^show.php$ - [L]
... Basta ricordarsi di toglierlo quando hai finito il debug!
Altre tecniche utili sono [qui] (http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules). – Doin