Das Apache-Modul "mod_rewrite"
Informationen rund um das "mod_rewrite"-Modul
mod_rewrite ist ein Modul für den Apache-Webserver, das die Definition sogenannter Rewrite-Regeln ermöglicht. Mit Hilfe von Rewrite-Regeln können URLs manipuliert und somit beispielsweise suchmaschinenfreundlicher gestaltet werden.
Das Modul mod_rewrite können Sie nutzen, indem Sie eine .htaccess-Datei erstellen. Informationen zum Anlegen einer .htaccess-Datei erhalten Sie auf der Seite ".htaccess" in diesen FAQ.
Um das mod_rewrite-Modul zu aktivieren, erstellen Sie in einer .htaccess-Datei bitte den folgenden Eintrag:
RewriteEngine On
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, Mambo oder osCommerce 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.
Weitere Informationen rund um mod_rewrite finden Sie unter den folgenden Links:
domainFACTORY Forum
In unserem Forum gibt es einen eigenen Bereich zum Thema .htaccess, in welchem häufig auch mod_rewrite-spezifische Themen behandelt werden:
http://forum.df.eu/forum/forumdisplay.php?f=130
Apache-Webseite Referenzdokumentation
Auf der Apache-Webseite finden Sie eine Referenzdokumentation zum "mod_rewrite"-Modul, welche sowohl auf die grundsätzliche Funktionsweise als auch das Erstellen komplexer Rewrite-Rules eingeht:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Apache-Webseite Rewrite-Guide
Neben der Referenzdokumentation befindet sich auf der Apache-Webseite auch ein Rewrite-Guide, der konkrete Lösungsansätze und Beispiele für RewriteRules bietet:
http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html
