Apache 2: mod_rewrite
Was ist mod_rewrite eigentlich? mod_rewrite ist ein Apache-Modul für die URL Manipulation. Mit der RewriteEngine des Apache-Servers ist es möglich eine URL anhand von Regeln umzuschreiben.
Ich möchte hier beschreiben wie Sie einen bereits funktionierenden Apache 2-Server unter SuSE Linux 10.0 konfigurieren um mod_rewrite einsetzen zu können.
1. Serverkonfiguration
Bevor Sie das Modul rewrite aktivieren sollten Sie überprüfen ob es nicht bereits geladen wurde. Dazu betrachten wir uns die Datei loadmodule.conf näher.
suse100:~ # mcedit /etc/apache2/sysconfig.d/loadmodule.conf
Suchen Sie nun ob folgende Zeile bereits vorhanden ist.
LoadModule rewrite_module /usr/lib/apache2-prefork/mod_rewrite.so
Sollte diese Zeile noch nicht existieren, müssen Sie das Rewrite-Modul noch einbinden.
suse100:~ # mcedit /etc/sysconfig/apache2
Suchen Sie die folgende Zeile.
APACHE_MODULES="access actions alias auth_dbm .... php4 php5"
Fügen Sie das Modul rewrite zu der Liste hinzu.
APACHE_MODULES="access actions alias auth_dbm .... php4 php5 rewrite"
Nachdem Sie die Datei abgespeichert haben müssen Sie den Apache-Server neu starten.
suse100:~ # rcapache2 restart
Um sicherzustellen dass das Modul auch geladen wurde, können Sie nochmals die loadmodule.conf überprüfen.
suse100:~ # mcedit /etc/apache2/sysconfig.d/loadmodule.conf
Wenn Sie jetzt die folgende Zeile finden, wurde das Modul rewrite eingebunden.
LoadModule rewrite_module /usr/lib/apache2-prefork/mod_rewrite.so
Da die Rewrite-Regeln in einer .htaccess-Datei stehen, müssen Sie diese Dateien erlauben. Dazu öffnen Sie zuerst die default-server.conf.
suse100:~ # mcedit /etc/apache2/default-server.conf
Suchen Sie jetzt nach dem folgenden Abschnitt.
<Directory "/srv/www/htdocs">
[...]
AllowOverride None
[...]
</Directory>
[...]
AllowOverride None
[...]
</Directory>
Für unsere Zwecke müssen Sie die Optionen FileInfo und Options eintragen.
AllowOverride FileInfo Options
Options Die Options-Direktive kann für das Verzeichnis angewandt werden.
FileInfo Alle Direktiven bezüglich Dateirechte und -zuordnung dürfen verwendet werden
Nachdem Sie diese Änderung durchgeführt haben, müssen Sie nochmals den Apache-Server neu starten.
suse100:~ # rcapache2 restart
2. Rewrite-Konfiguration
Wie bereits erwähnt, werden die Rewrite-Regeln in einer .htaccess-Datei hinterlegt. Am Anfang dieser Datei sollten folgende Zeilen stehen.
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteEngine On
In der ersten Zeile erlauben Sie dem Server dass er symbolischen Links (SymLinks) folgt. Mit der zweiten Zeile aktivieren Sie die RewriteEngine.
Jetzt folgen die eigentlichen Rewrite-Regeln. Das einfachste Beispiel ist wohl eine Datei zu einer anderen umzuleiten. Wie Sie sehen wird im folgenden Beispiel jede Anfrage auf die Datei index.html zur index1.html weitergeleitet.
RewriteRule index.html$ index1.html
Im nächsten Beispiel werden alle Zugriffe auf HTML-Dateien auf PHP-Dateien weitergeleitet.
RewriteRule ^(.*).html$ $1.php
Wer bereits mit PHP gearbeitet hat, kennt sicherlich die Möglichkeit eine oder mehrere Variablen mit einem "?" an ein PHP-Script zu übergeben. Mit der folgenden RewriteRule können Sie Variablen aus einer URL die auf eine HTML-Datei verweist extrahieren.
Im ersten Beispiel werden alle Zugriffe auf Dateien wie z. B. page_36.html umgewandelt in page.php?id=36.
RewriteRule ^page_([0-9]+).html$ page.php?id=$1
Angenommen Sie wollen keine Zahl sondern ein Wort (z.B. den Benutzernamen) übergeben, dann sieht ihre RewriteRule wie folgt aus.
RewriteRule ^page_(.*).html$ page.php?user=$1
Wenn Sie mehr als nur eine Variable übergeben wollen, könnte die Syntax wie folgt aussehen.
RewriteRule ^page_(.*)_([0-9]+).html$ page.php?user=$1&id=$2
Wenn Sie eine andere RewriteRule benötigen oder sich einmal die Syntax von mod_rewrite ansehen wollen, finden Sie hier eine Zusammenfassung der regulären Ausdrücke.
http://www.modrewrite.de/mod_rewrite.syntax.phtml
Unter dem folgenden Link finden Sie zu den meisten Fehlermeldungen eine Lösung.
http://www.modrewrite.de/foren/ftopic82.html
Dieser Eintrag wurde am 12.01.2006 erstellt und zuletzt am 13.05.2011 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_567.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer