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 .htaccess
Dateien 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
.htaccess
von 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: dieRewriteLog
Die Richtlinie gilt nur in denKontexteiner Serverkonfiguration oder des virtuellen Hosts ...
Das heißt, es istnicht erlaubtin einer .htaccess
Datei!