webentwicklung-frage-antwort-db.com.de

Wie man Apache mod_rewrite debuggt

Ich habe zwei Hauptprobleme mit mod_rewrite:

1) Es wird kein bedeutender Fehler gemeldet, wenn ich eine ungültige Regel habe

enter image description here

2) Um jede Änderung zuverlässig zu testen, muss der Cache von Chrome gelöscht werden. Dies ist keine Hexerei, aber ich muss Strg + Umschalt + Entf drücken, dann auf OK klicken, dann das Fenster schließen und neu laden.

Ich würde gerne sehen, ob einige der Gurus bereit sind, ihre Geheimnisse zur effizienten Verwaltung von mod_rewrite-Code mitzuteilen.

159
puk

Ein Trick besteht darin, das Umschreibeprotokoll einzuschalten. Um es zu aktivieren, probieren Sie diese Zeilen in Ihrer Apache-Hauptkonfiguration oder der aktuellen virtuellen Host-Datei ( nicht in .htaccess):

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

Seit Apache httpd 2.4 mod_rewrite wurden die Anweisungen RewriteLog und RewriteLogLevel vollständig durch die neue Protokollierungskonfiguration pro Modul ersetzt.

LogLevel alert rewrite:trace6
265
Ben

Die von Ben erwähnte LogRewrite-Direktive ist in Apache 2.4 nicht mehr verfügbar. Sie müssen stattdessen die LogLevel-Direktive verwenden. Z.B.

LogLevel alert rewrite:trace6

Siehe http://httpd.Apache.org/docs/2.4/mod/mod_rewrite.html#logging

122
Tobias Schultze

Verwenden Sie für die grundlegende URL-Auflösung einen Befehlszeilen-Abruf wie wget oder curl, um die Tests durchzuführen, anstatt einen manuellen Browser. Dann müssen Sie keinen Cache löschen. Klicken Sie auf den Pfeil nach oben und geben Sie in eine Shell ein, um Ihre Testabrufe erneut auszuführen.

24
Kaz

Es gibt den Htaccess-Tester .

Es wird angezeigt, welche Bedingungen für eine bestimmte URL getestet wurden, welche die Kriterien erfüllten und welche Regeln ausgeführt wurden.

Es scheint jedoch ein paar Pannen zu haben.

10
Andy

Basierend auf Bens Antwort könnten Sie Folgendes tun, wenn Sie Apache unter Linux ausführen (in meinem Fall Debian).

Erstellen Sie zuerst die Datei rewrite-log.load

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

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

Dann treten Sie ein

$ a2enmod rewrite-log

gefolgt von

$ service Apache2 neu starten

Und wenn Sie mit dem Debuggen Ihrer Rewrite-Regeln fertig sind

$ a2dismod rewrite-log && service Apache2 neu starten

3
Flow