Good to Know Database

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>

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

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 ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer