Permanent Redirect – wie leite ich einen Link dauerhaft um?
Eins möchte ich euch schon einmal vorweg nehmen – vergesst META REFRESH und Javscript Aufrufe ala location.href=”bla.html”. Für eine dauerhafte Umleitung sind diese Methoden nicht der richtige Weg. Permanent Redirect bedeutet, dass eine Internetseite für den Browser und Suchmaschinen - vor allem Suchmaschinen sind da richtig geil drauf – eindeutig erkennbar dauerhaft auf eine andere Internetseite umgeleitet wird. Als Erkennungsmerkmal wird beim Aufruf einer permanent umzuleitenden Seite anstatt des normalen Header
HTTP/1.x 200 OK
der Header
HTTP/1.x 301 Moved Permanently
gesendet wird. Und genau diese Modifikation des Header können META REFRESH und Javascript location.href=”bla.html” nicht. Soweit so gut…
Oftmals spricht man der Kürze wegen auch von einem 301 Redirect … mehr über Header kann man bei Wikipedia nachlesen. Das dauerhafte Umleiten von Links kann aus verschiedensten Beweggründen wichtig sein. Einer der Gründe ist das Vermeiden von Duplicate Content, ein anderer könnte eine veränderte Internetadresse sein, …. es gibt sicherlich 1000 Weitere Gründe.
Wie man nun einen Permanent Redirect realisiert und was es dabei zu beachten gibt, habe ich nachfolgend kurz zusammen gefasst.
Wie wird ein Permanent Redirect realisiert?
Kommen wir nun zum eigentlich wichtigen. Zunächst einmal muss sicher gestellt sein, dass man auf dem eigenen Webspace .htaccess Dateien verwenden kann und das Modul mod_rewrite aktiviert ist. Dies ist in der Regel der Fall. Andernfalls ist der Kurs an dieser Stelle zu Ende lediglich informativer Natur.
Sofern noch keine .htaccess Datei auf dem Webspace angelegt ist, ist das jetzt zu tun. Im Kopf der Datei sollte dann folgendes stehen:
RewriteEngine On
RewriteBase /
Diese HTACCESS Datei wird nun vom Webserver bei jedem Seitenaufruf geladen und konfiguriert diesen quasi nachträglich um. Die Direktive (so nennt man diese Eigenschaften) RewriteEngine weist den Webserver mit dem Wert On an, das Modul mod_rewrite zu aktivieren. RewriteBase ist der relative Startpfad der Webseite (für http://www.schulungs-kurse.de demnach ein einfacher Slash oder liegt die HTACCESS Datei in einem Unterverzeichnis /meinUnterverzeichnis – immer relativ von der Domain gesehen).
Der 301 Redirect für einen Aufruf einer Webseite ohne www auf die gleiche Seite aber mit www könnte so aussehen:
RewriteCond %{HTTP_HOST} !^www\.webtubes\.de$
RewriteRule ^(.*)$ http://www.webtubes.de/$1 [L,R=301]
Kopiert meine Domain http://webtubes.de (ohne www) einfach in ein neues Fensterchen und drückt ENTER. Anschließend wird im Browser die Seite mit www angezeigt. Das Besondere an dieser Umleitung ist, dass aufgerufene Pfade und angehangene Query Strings Parameter an die neue Seite übergeben werden. Ein Aufruf der Seite
http://webtubes.de/bla/huhu.php?q=1
wird also nach
http://www.webtubes.de/bla/huhu.php?q=1
permanent umgeleitet – probiert es ruhig aus (euch grinst ein 404 Error an, da die Zielseite natürlich nicht existiert).
Wichtige Tipps und Beispiele
- Sollen Query Strings Parameter nicht an die Zielseite angehängt werden, ist an die Zielseite ein Fragezeichen (?) anzuhängen
RewriteRule ^(.*)$ http://www.webtubes.de/$1? [L,R=301]
- Soll der aufgerufene Pfad beziehungsweise die aufgerufene Datei nicht an die neue Seite angehängt werden, ist die Variable $1 zu entfernen
RewriteRule ^.*$ http://www.webtubes.de/ [L,R=301]
- Soll nur eine bestimmte Seite umgeleitet werden und nicht blind links alle Seiten, ist die Regel durch Conditions Bedingungen zu erweitern
# bitte nur doofe-seite.html umleiten ok?
RewriteCond %{REQUEST_URI} ^doofe-seite\.html$
RewriteRule ^.*$ http://www.webtubes.de/ [L,R=301]
# … Yes sir - Sollen bestimmt Seiten von der Umleitung ausgeschlossen werden – also entgegen gesetzt zu Tip 3 – ist die Regel ebenfalls durch Conditions Bedingungen zu erweitern
# ALLES, aber bitte nicht meine-beste-seite.html umleiten ok?
RewriteCond %{REQUEST_URI} !^meine-beste-seite\.html$
RewriteRule ^.*$ http://www.webtubes.de/ [L,R=301]
# … alles klar CapitanoMan beachte bei dieser Regel das Ausrufezeichen (!) in der Bedingung, welches die Bedingung im Grunde einfach rum dreht: wenn Seite nicht meine-beste-seite.html mittels 301 Redirect umleiten…
Anmerkungen
Für das permanente Umleiten gibt es weitere Schreibweisen, die jedoch nur auf einem anderen Weg nach Rom führen. Sollte ich etwas vergessen haben, werde ich diesen Beitrag ergänzen.
Fazit
Das dauerhafte Umleiten eines Links ist total einfach, vorausgesetzt die Grundlagen werden beherrscht.
2 Kommentare
Other Links to this Post
RSS Feed für Kommentare zu diesem Artikel. TrackBack URI
By marcel, 30. Juni 2010 @ 18:51
hallo zusammen,
ich muss alle unterordner (und auch weitere) ab:
domain.tld/uc/…/…/xy.html
http://www.domain.tld/uc/…/…/xy.html
nach
shop.domain.tld
umleiten. dies, da unter shop.domain.tld der neue web-shop ist. google jedoch hat noch 100te links auf den alten pfad. gibt es eine möglichkeit, dass ich bestimmem kann, dass alles ab /uc/…… umgeleitet wird?
vielen dank für ein praktisches beispiel.
By Der Typ, 30. Juni 2010 @ 20:20
wenn du alles nach uc/ auf die Root des Shops weiter leiten möchtest (Pfad verwerfen):
RewriteRule uc/.* http://shop.domain.tld [L,R=301]wenn du die Pfade hinter uc/ bei behalten möchtest:
RewriteRule uc/(.*) http://shop.domain.tld/$1? [L,R=301]Grüße