22
In diesem Artikel möchte ich anhand von einigen Beispielen erklären, wie man Domains, einzelne Seiten und Verzeichnisse umleitet. Dazu muss allerdings das Modul “Mod_Rewrite” auf dem Apache-Webserver aktiviert sein und man braucht eine Datei namens .htaccess.
Wie lege ich eine .htaccess Datei an?
Wir legen als erstes eine Datei htacces.txt mit dem Texteditor an. In diese Datei schreiben wir alle notwendigen Angaben rein. Danach öffnen wir unser FTP Programm und laden die htacces.txt auf den Webspace. Dort benennen die htacces.txt in .htaccess um (den Punkt nicht vergessen).
Erklärung: Wenn man unter Windows versucht mittles Abspeichern oder Umbenennen eine .htaccess Datei zu erstellen, wird man feststellen, dass Windows die Aktion verweigert und von uns verlangt, einen „richtigen“ Dateinamen einzugeben. Das FTP Programm interessiert es nicht, ob ein Name vor dem Punkt steht oder nicht.
Eine Standard-Domain definieren:
Mit dem folgenden Code kann man eine Standarddomain definieren. Das bedeutet, wenn ein User eine Domain ohne “www” eingibt, wird er automatisch auf www.domain.de weitergeleitet.
Beispiel 1:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
Ergebnis: domain.de wird zu www.domain.de
Umgekehrt ohne www lautet der Code so:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^domain\.de$
RewriteRule ^(.*)$ http://domain.de/$1 [L,R=301]
Ergebnis: www.domain.de wird zu domain.de
Beispiel 2: Funktioniert nur wenn es der selbe Host ist.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
Ergebnis: domain.de wird zu www.domain.de
Umgekehrt ohne www lautet der Code so:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ http://domain.de/$1 [L,R=301]
Ergebnis: www.domain.de wird zu domain.de
Der folgende Code bedeutet, dass ein Besucher der www.alte-domain.de eingibt automatisch auf www.neue-domain.de weitergeleitet wird. Natürlich werden alle Urls mit übergeben, zb. www.alte-domain.de/seite.html wird zu www.neue-domain.de/seite.html.
Beispiel:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.alte-domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301]
Ergebnis: www.alte-domain.de wird zu www.neue-domain.de
Einzelne Seiten umleiten:
Hier wird beim Aufruf der Seite seite-alt.html direkt zur Seite seite-neu.html weitergeleitet
RewriteEngine On RewriteRule ^seite-alt\.html$ /seite-neu.html [R=301,L]
Ergebnis: seite-alt.thml wird zu seite-neu.html
Der folgende Code ist dafür geeignet, wenn auf eine neue Domainunterseite weitergeleitet werden soll:
RewriteEngine On RewriteRule ^seite-alt\.html$ http://www.neue-domain.de/seite-neu.html [R=301,L]
Ergebniss: seite-alt.html wird zu www.neue-domain.de/seite-neu.html
Das ganze funktioniert auch per Redirect
Sobald man seine Webeite umbenennt oder auf eine neue Domain zieht, kann man per Redirect von der alten Seitenadresse auf die neuen Adresse weiterleiten. Dabei kann man verschiedene Status-Codes an den Suchmaschinen Spider ausgeliefern.
In der Regel verwendet man folgende HTTP-Status-Codes:
301 = bedeutet das die Seite jetzt dauerhaft / permanent an anderer Stelle zu finden ist.
302 = bedeutet das die Seite zeitweilig an anderer Stelle zu finden ist.
Beispiel 1:
Redirect 301 /seite.html http://www.neue-domain.de/seite.html
Ergebnis: www.alte-domain.de/seite.html wird zu http://www.neue-domain.de/seite.html
Beispiel 2:
Redirect 301 /verzeichnis/seite.html http://www.neue-domain.de/neu-seite.html
Ergebnis: www.alte-domain.de/verzeichnis/seite.html wird zu http://www.neue-domain.de/seite.html
Beispiel 3:
Redirect 301 /verzeichnis http://www.neue-domain.de/verzeichnis-neu/
Ergebnis: www.alte-domain.de/verzeichnis/ wird zu http://www.neue-domain.de/verzeichnis-neu/
Umleitung ganzer Seiten
Wenn man komplett mit seiner Seite umzieht, ist die einfachste Variante den folgenden Code zu benutzen:
Redirect 301 / http://www.neue-domain.de/
Der “/” gibt an, dass alle Dateien und Verzeichnisse auf die neue Domain umgeleitet werden sollen. Der Schrägstrich “/” am Ende der Domain ist wichtig, sonst funktioniert die Weiterleitung nicht richtig. Ebenfalls muss die Verzeichnisstruktur gleich geblieben sein.
Eine weitere Variante ist der Befehl RedirectMatch
Im Gegensatz zu Redirect unterstützt RedirectMatch reguläre Ausdrücke. Das ist besonders sinnvoll bei umfangreichen und komplizierten Weiterleitungen.
Beispiel 1:
Möchte man seine Webseite auf eine neue Dateiendung umstellen will: aus .php wird .html
RedirectMatch permanent (.*)\.php$ http://www.domain.de$1.html
Ergebnis: Die angeforderte Dateien mit der Endung .php werden zu der gleichnamigen Datei mit der Endung .html umgeleitet. Das gilt für die komplette Webseite, also für alle .php-Dateien. So würde es ausehen:
http://www.domain.de/index.php —> http://www.domain.de/index.html
http://www.domain.de/seite.php —> http://www.domain.de/seite.html
Beispiel 2:
Dateien sollen von einem Unterverzeichnis auf die Haupt- Domain weitergeleitet werden, wo kein Unterverzeichnis namens “abc” existiert.
RedirectMatch ^/abc/([a-zA-Z0-9_-]*).html$ http://www.domain.de/$1.html
Ergebnis: http://www.domain.de/abc/seite.html —> http://www.domain.de/seite.html
Die Möglichkeiten mit RedirectMatch umzuleiten sind sehr vielfältig, doch dazu später einmal mehr.
Links:
Mehr zu regulären Ausdrücken gibt es bei Selfhtml und Wikipedia
Dokumentation Apache mod_alias
Dokumentation Apache mod_rewrite
Ähnliche Beiträge
- Aktualisiert am:
- 23. Februar 2010
- Kategorie:
- Html, CSS & Co.,Tutorials
- Tags:
- Anleitung, Apache, htaccess, Mod_Rewrite, Redirect, Tutorials
- Beitrag:
- Trackback URL | Kommentare per RSS Feed abonnieren
4 Kommentare
Hallo,
als erstes will ich für die super erläuterung und Beispiele bedanken!
Habe einiges ausprobiert, leider aber kam nicht zum angestebten Ergebnis.
Habe folgendes Problem:
Habe 3 Domains, die auf einem Wabspase in den Unterordner laufen sollen. Sprich
http://www.domain1.de soll in unter http://www.domain1.de/ordner1 erreicht werden.
http://www.domain2.de soll in unter http://www.domain2.de/ordner2 erreicht werden.
http://www.domain3.de soll in unter http://www.domain3.de/ordner3 erreicht werden.
heute habe ich folgenden Eintrag in .htaccess
RewriteEngine on
RedirectMatch permanent ^/$ http://www.domain1.de/ordner1/index.php
sprich alles was unter root/ abgerufen wird läuft es auf
http://www.domain1.de/ordner1/index.php
Und dies soll sich ändern.
Hat jemand eine Idee?
HIer die Lösung
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.test1\.de$ [NC]
RewriteCond %{REQUEST_URI} !^/projekt1/
RewriteRule ^(.*)$ /projekt1/$1 [L]
RewriteCond %{HTTP_HOST} ^www\.test2\.de$ [NC]
RewriteCond %{REQUEST_URI} !^/projekt2/
RewriteRule ^(.*)$ /projekt2/$1 [L]






29.3 2009 um 16:17
Hi,
Schreibfehler?
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.alte-domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301]
So funktionierts (zumindest bei mir eben
)
RewriteCond %{HTTP_HOST} !^www\.alte-domain.de\$ [NC]