Wenn eine Rewrite-Regel nicht funktioniert, kann das viele Ursachen haben. Einige häufige Ursachen haben wir im Folgenden für Sie zusammengestellt.
Die Anweisung "RewriteBase"
Je nach Struktur des Webservers wird in der .htaccess-Datei die Anweisung RewriteBase benötigt, um Rewrite-Regeln nutzen zu können. Es kann deshalb vorkommen, dass eine .htaccess-Datei, die auf einem Webserver problemlos lief, auf einem anderen Webserver nicht mehr funktioniert. Häufig kommt es dabei zu einem "Fehler 404" (Not found). Fügen Sie dann einfach die Zeile
RewriteBase /
nach der Zeile
RewriteEngine On
ein.
Liegt die .htaccess-Datei nicht im Stammverzeichnis (Document Root) der Domain muss der Pfad angegeben werden, unter welchem die Datei abgelegt ist:
RewriteBase /verzeichnis1/verzeichnis2
Wenn Sie die .htaccess-Datei einer Open-Source-Software wie z.B. Joomla oder Drupal für Suchmaschinenoptimierung (SEO) verwenden, steht die Anweisung RewriteBase oft schon in der .htaccess-Datei, wurde aber durch das Voranstellen des Kommentarzeichens # deaktiviert. Dann genügt es das Kommentarzeichen zu entfernen.
Mehr zu diesem Thema erfahren Sie in der Dokumentation zu RewriteBase auf Apache.org.
php_value und php_flag
Die Anweisungen php_value und php_flag können bei domainFACTORY nicht verwendet werden. Ist eine der beiden Anweisungen in der .htaccess-Datei enthalten, erhalten Sie die Fehlermeldung "internal server error". Sie können stattdessen den PHP.INI-Editor nutzen, wenn dieser in Ihrem Paket enthalten ist. In den anderen skriptfähigen Paketen können Sie eine eigene PHP.INI-Datei für diesen Zweck anlegen.
Anweisungen, die nicht in .htaccess-Dateien verwendet werden können
Einige Anweisungen wie RewriteMap und RewriteLog sind nicht für .htaccess-Dateien vorgesehen und können deshalb nicht verwendet werden. Ob eine Anweisung in einer .htaccess-Datei verwendet werden kann, erfahren Sie in der Dokumentation zu mod_rewrite: Nur wenn in der Zeile "Context" für die jeweilige Anweisung auch ".htaccess" steht, kann die Anweisung in einer .htaccess-Datei eingesetzt werden.
Tipps zur Fehlersuche
Bei der Fehlersuche ist es hilfreich, hinter die Anweisung, in welcher man einen Fehler vermutet, das Flag [L] zu schreiben. Dadurch werden die Rewrite-Regeln nach Ausführung dieser Anweisung abgebrochen. So kann die Funktionalität einzelner Anweisungen überprüft werden, ohne dass das Ergebnis durch nachfolgende Anweisungen verändert wird.
Außerdem hilft es, das Flag [R] hinter die Anweisung zu schreiben, in der man einen Fehler vermutet. Dadurch wird eine externe Weiterleitung erzwungen und in der Adresszeile des Browsers wird angezeigt, wohin tatsächlich weitergeleitet wird.