Domainnamen mit RewriteRule anpassen
RewriteRule
Mit der Anweisung RewriteRule
des Apache Moduls rewrite_module
können URLs regelbasiert umgeschrieben werden 1). RewriteRule
besteht dabei aus einem Muster für den Request, der umgeschriebenen URL auf die weitergeleitet wird und optionalen Flags.
RewriteRule Muster URL [Flags]
Bevor Regeln mit RewriteRule
verarbeitet werden können muss in der Konfigurationsdatei des Webservers oder einer .htaccess
Datei mit RewriteEngine
das Apache Modul aktiviert werden. Diese Anweisung muss dann in jeder verwendeten .htaccess
Dateien einmal vorhanden sein.
RewriteEngine on RewriteRule .* http://www.google.de
Für die Muster sind reguläre Ausdrücke verwendbar, so dass eine URL aus beliebig kombinierbaren Zeichen bestehen kann. Beispiele für die Verwendung von RewriteRule
sind Weiterleitungen veralteter Seiten und das Einfügen oder Ersetzen von Namensbestandteilen einer Seite.
Zum Beispiel kann auf eine aktuellere Seite oder ein anderes Verzeichnis weiter geleitet werden. Der Nutzer bekommt hiervon nichts mit und muss sich um die interne Verzeichnisstruktur nicht kümmen. Die im Browser sichtbare URL wird sich für den Nutzer auch nach einer Umschreibung nicht ändern.
RewriteEngine on RewriteRule /data/old.html /data/new.html [L]
Im Beispiel liegt eine .htaccess Datei
im Ordner /data
und scheibt die URL /data/old.html
in /data/new.html
um.
Solange auf die Ressource auf auch zugegriffen werden kann ist jede URL beliebig veränderbar. Hierzu können reguläre Ausdrücke mit einem Muster verwendet werden, dass zwischen einem Zirkumflex und einem Dollarzeichen stehen muss.
RewriteEngine on RewriteRule ^(.*).html$ data/$1.php [L,R=301]
Zwischen ^
und $
wird das Muster definiert. Mit dem in Klammern stehenden regulären Ausdruck (.*)
kann eine Variable $1
erstellt und für einen Zielpfad verwendet werden. Im Beispiel wird die Dateiendung html durch php ersetzt.
RewriteCond
Um Regeln auch an Bedingungen knüpfen zu können wird die Anweisung RewriteCond
verwendet. RewriteCond
besteht aus zwei Parametern, die auf eine Übereinstimmung geprüft werden. Parameter können sowohl normaler Text als auch Servervariablen sein. Nur bei einer Übereinstimmung wird die nachfolgende RewriteRule
Anweisung auch ausgeführt.
So kann beispielsweise überprüft werden, ob eine bestimmte Ressource abgefragt wird.
RewriteCond %{REQUEST_URI} =/old/index.html RewriteRule .* /new/index.php [L,R=301]
Wenn es sich bei der angefragten Ressource um /old/index.html handelt wird die URL auf /new/index.php umgeschrieben.
Domainnamen umschreiben
Ein häufige Anwendung von RewriteCond
ist das Umschreiben der eigentlichen Domain-URL. Falls beispielsweise eine Seite bereits SSL nutzt braucht es keinen Zugang zur HTTP-Seite auf Port 80 mehr, so dass eine URL stets auf HTTPS umgeleitet werden kann. Das Umschreiben hierzu sollte dann global in der Konfigurationsdatei des Webservers erfolgen und nicht in einer htaccess
Datei.
<VirtualHost *:80> ... RewriteEngine on RewriteCond %{SERVER_NAME} =subdomain.domain.de [OR] RewriteCond %{SERVER_NAME} =www.subdomain.domain.de RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=302] ... </VirtualHost>
<< Neuere Einträge | Ältere Einträge >>