Warum funktioniert das Aktivieren des Rewrite-Protokolls in .htaccess nicht?

Warum funktioniert das Aktivieren des Rewrite-Protokolls in .htaccess nicht?

Ich möchte die Umschreibeprotokollierung aktivieren, damit ich eine Umschreiberegel debuggen kann, aber das Hinzufügen der RewriteLog-Direktiven verursacht einen 500-Fehler.

Versionsinformation:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

Inhalt von.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Im Fehlerprotokoll sehe ich:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

Antwort1

Abgesehen davon, dass ich vergessen hatte, dass sich das Logging nicht in .htaccessDateien konfigurieren lässt, stellte sich heraus, dass dies auch ein Problem mit der Apache-Version war. Die RewriteLog-Direktive wurde in neueren Versionen ersetzt und das Hinzufügen des Folgenden zur Virtualhost-Konfiguration aktivierte das Rewrite-Log für mich:

LogLevel alert rewrite:trace3 (can be increased to trace8)

Aus dem Handbuch:

Wer mit früheren Versionen von mod_rewrite vertraut ist, wird zweifellos nach den Anweisungen RewriteLog und RewriteLogLevel suchen. Diese Funktionalität wurde vollständig durch die oben erwähnte neue Protokollierungskonfiguration pro Modul ersetzt.

Um diese Meldungen im Fehlerprotokoll herauszufiltern, können Sie Folgendes tun:

tail -f error_log|fgrep '[rewrite:'

Antwort2

Ich muss mich wiederholen:

Die meisten Leute, die .htaccess verwenden und bei ServerFault danach fragen, sollten .htaccess überhaupt nicht verwenden, da es sich dabei um eine Endbenutzerlösung handelt, die nicht für Administratoren gedacht ist:

Du solltestVermeiden Sie die Verwendung von .htaccess-Dateien vollständigwenn Sie Zugriff auf die Konfigurationsdatei des Hauptservers von httpd haben. Die Verwendung .htaccessvon Dateien verlangsamt Ihren Apache-HTTP-Server. Jede Anweisung, die Sie in eine .htaccess-Datei aufnehmen können, wird besser in einem Verzeichnisblock festgelegt, da dies den gleichen Effekt bei besserer Leistung hat.
Quelle: Apache-Handbuch

Offenbar sind die meisten Leute, die ihre Konfigurationen veröffentlichen,Cargo-Kult-Programmiererkopieren gerne .htaccess-Dateien blind, ohne die Gründe zu verstehen.

Ihr Problem ist ein Paradebeispiel: dieRewriteLogDie Richtlinie gilt nur in denKontexteiner Serverkonfiguration oder des virtuellen Hosts ...

Das heißt, es istnicht erlaubtin einer .htaccessDatei!

verwandte Informationen