Ich habe zwei Hauptprobleme mit mod_rewrite:
1) Wenn ich eine ungültige Regel habe, wird kein aussagekräftiger Fehler gemeldet
2) Um jede Änderung zuverlässig zu testen, muss ich den Chrome-Cache löschen. Dies ist keine Raketenwissenschaft, aber ich muss Strg + Umschalt + Entf drücken, dann auf OK klicken, das Fenster schließen und neu laden.
Ich würde gerne sehen, ob einer der Gurus bereit ist, seine Geheimnisse zu teilen, um mod_rewrite-Code effizient zu verwalten.
apache
mod-rewrite
puk
quelle
quelle
Antworten:
Ein Trick besteht darin, das Umschreibungsprotokoll zu aktivieren. Versuchen Sie zum Aktivieren diese Zeilen in Ihrer Apache-Hauptkonfiguration oder in der aktuellen virtuellen Hostdatei ( nicht in
.htaccess
):Seit Apache httpd 2.4 mod_rewrite wurden die Direktiven RewriteLog und RewriteLogLevel vollständig durch die neue Protokollierungskonfiguration pro Modul ersetzt.
quelle
RewriteEngine On
Abschnitt auch dort haben, denn wenn Sie ihn nur (wie ich) in der.htaccess
Datei aktivieren , wird nichts protokolliert.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
Siehe http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
quelle
tail -f error_log|fgrep '[rewrite:'
AllowOverride
eingestellt warAll
!Verwenden Sie für die grundlegende URL-Auflösung einen Befehlszeilenabruf wie
wget
odercurl
zum Testen anstelle eines manuellen Browsers. Dann müssen Sie keinen Cache leeren. Klicken Sie einfach auf den Pfeil und geben Sie in eine Shell ein, um Ihre Testabrufe erneut auszuführen.quelle
Da ist der htaccess-Tester .
Es zeigt, welche Bedingungen für eine bestimmte URL getestet wurden, welche die Kriterien erfüllten und welche Regeln ausgeführt wurden.
Es scheint jedoch einige Pannen zu haben.
quelle
Basierend auf Bens Antwort können 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
Dann treten Sie ein
gefolgt von
Und wenn Sie mit dem Debuggen Ihrer Umschreiberegeln fertig sind
quelle
LogLevel warn rewrite:trace8
oderLogLevel info rewrite:trace8
wo 8 eine beliebige Zahl von 1-8 sein kann