Es gibt ver­schie­de­ne Wege, eine Domain oder Subdomain auf einen anderen Bereich deiner Website oder eine externe Adresse um­zu­lei­ten. Stan­dard­mä­ßig nutzt man für solche Domain-Wei­ter­lei­tun­gen (auch Redirects oder URL-For­war­ding genannt) .htaccess, PHP-Scripte, HTML-Meta-Tags oder Ja­va­Script.

Domain-Wei­ter­lei­tun­gen im Web-Alltag

Im Grunde sagen Redirects dem Server: „Diese Inhalte sind von URL A nach URL B umgezogen.“ Das ist besonders wichtig, wenn die alte Adresse verlinkt ist, als Le­se­zei­chen ge­spei­chert wurde oder bereits gute Rankings in Such­ma­schi­nen hat. Die Wei­ter­lei­tung si­gna­li­siert dem Browser oder Web­craw­ler direkt den neuen Spei­cher­ort. Ohne diesen Hinweis würden deine Besucher:innen statt der ge­wünsch­ten Seite nur eine 404-Feh­ler­sei­te sehen.

Gerade bei ge­schäft­li­chen Web­pro­jek­ten gilt es, das zu vermeiden. On­line­shops zum Beispiel ändern ihr Sortiment laufend. Ist ein Produkt aus­ver­kauft, leitest du In­ter­es­sier­te einfach auf eine Seite mit ähnlichen Artikeln weiter. So lässt du den Be­su­cher­strom glatt laufen und ver­hin­derst unnötige Absprünge.

Mit einer Domain-Wei­ter­lei­tung kannst du denselben Inhalt zudem unter ver­schie­de­nen Adressen er­reich­bar machen. Alle al­ter­na­ti­ven Domains führen dann einfach zur Haupt­do­main deines Projekts. So eine pauschale Wei­ter­lei­tung funk­tio­niert un­ab­hän­gig vom exakten Pfad, den jemand im Browser eingibt.

Arten von Domain-Wei­ter­lei­tun­gen

Man un­ter­schei­det primär zwischen ser­ver­sei­ti­gen und client­ba­sier­ten Um­lei­tun­gen. Bei der ser­ver­sei­ti­gen Domain-Wei­ter­lei­tung wird ein HTTP-Status-Code an den Browser oder Web­craw­ler gesendet. Client­ba­sier­te Wei­ter­lei­tun­gen kommen ohne diese Rück­mel­dung aus und werden daher nicht von allen Systemen un­ter­stützt. Im schlimms­ten Fall bleiben Nutzer:innen auf der alten Seite hängen. Deshalb ist die ser­ver­sei­ti­ge Lösung fast immer die bessere Wahl. Client­ba­sier­te Varianten sind eher ein Notbehelf, falls tech­ni­sche Hürden im Weg stehen.

Eine Spe­zi­al­form ist der trans­pa­ren­te Redirect (auch Mas­kie­rung genannt). Hier ändert sich die URL in der Adress­zei­le nicht, obwohl der Inhalt von einer anderen Domain geladen wird. Da dies oft Probleme bei der In­de­xie­rung und der Dar­stel­lung im Browser ver­ur­sacht, ist diese Methode nur bedingt ratsam.

Ser­ver­sei­ti­ge Wei­ter­lei­tung

Meistens wird eine ser­ver­sei­ti­ge Umleitung via .htaccess oder per PHP-Script gelöst. Der große Pluspunkt: Du legst genau fest, welcher HTTP-Status-Code gesendet wird. So de­fi­nierst du, ob ein Umzug dauerhaft oder nur vor­über­ge­hend ist. Besonders wichtig sind dabei diese HTTP-Status-Codes:

  • 301 – Moved Per­ma­nent­ly: Die Inhalte sind dauerhaft unter der neuen Adresse zu finden. Die alte URL verliert ihre Gül­tig­keit. Hier ist der 301-Redirect der Gold­stan­dard.
  • 302 – Moved Tem­po­r­a­ri­ly: Die Inhalte sind nur kurz­zei­tig woanders geparkt. Die ur­sprüng­li­che URL bleibt offiziell bestehen.

Ohne manuelle Fest­le­gung senden Webserver oft stan­dard­mä­ßig den Code 302. Das ist nicht immer ideal. Um In­de­xie­rungs­feh­ler wie das URL-Hijacking zu vermeiden, solltest du den Code händisch de­fi­nie­ren. Ein 302-Code si­gna­li­siert Crawlern nämlich, dass die alte URL im Suchindex bleiben soll. Bei einem dau­er­haf­ten Umzug würden so beide Adressen um die Plätze in der Such­ma­schi­ne kon­kur­rie­ren.

Umleitung via .htaccess

Die .htaccess ist eine Kon­fi­gu­ra­ti­ons­da­tei für Apache-Webserver. Mit ihr kannst du Ein­stel­lun­gen direkt auf Ver­zeich­nis­ebe­ne steuern, ohne die Haupt­kon­fi­gu­ra­ti­on des Servers zu ändern. Ein klas­si­scher Ein­satz­be­reich ist das Umleiten einzelner Pfade oder ganzer Domains.

Mit ein wenig Code in der .htaccess richtest du deine Wei­ter­lei­tung ein. Wenn du die Datei mit folgendem Inhalt im Haupt­ver­zeich­nis plat­zierst, landen alle Anfragen für die alte Domain au­to­ma­tisch bei www.beispiel.de:

Redirect 301 / http://www.beispiel.de/
apach­econf

Der Befehl startet mit Redirect 301, was den Status-Code festlegt. Danach folgt der Quellpfad (der Schräg­strich steht für alles). Den Abschluss bildet die komplette Ziel-URL: http://www.beispiel.de.

Auch einzelne Dateien lassen sich so ver­schie­ben. Hier ein Beispiel für die Umleitung einer spe­zi­fi­schen Datei:

Redirect 301 /verzeichnis/beispiel-dokument.html http://www.beispiel.de/beispiel.html
apach­econf

Nach dem Code 301 steht der Pfad der alten Datei (/verzeichnis/beispiel-dokument.html), gefolgt von der neuen Ziel­adres­se (http://www.beispiel.de/beispiel.html).

Nutzt dein Apache-Server das mod_rewrite-Modul, sieht eine per­ma­nen­te Umleitung so aus:

RewriteEngine On
RewriteRule ^verzeichnis/beispiel-dokument.html$ http://www.beispiel.de/beispiel.html [L,R=301]
apach­econf

In Zeile 01 wird das Modul via RewriteEngine On scharf ge­schal­tet. Danach folgt die RewriteRule mit Quellpfad und Ziel. Son­der­zei­chen wie Caret und Dollar de­fi­nie­ren den exakten Pfad, während L die Regel ab­schließt. R=301 sorgt für den korrekten 301-Status.

Achtung: Fehler in der .htaccess können deine Website komplett lahmlegen. Da Än­de­run­gen sofort nach dem Speichern aktiv werden, solltest du deine Kon­fi­gu­ra­ti­on immer sofort prüfen.

Wei­ter­lei­tung mit PHP

Al­ter­na­tiv zur .htaccess kannst du einen Redirect direkt in ein PHP-Script (etwa die index.php) schreiben. Hier ein Beispiel für einen per­ma­nen­ten Umzug auf www.beispiel.de:

<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.beispiel.de");
exit;
?>
php

Über die header-Funktion in Zeile 02 setzt du den HTTP-Status auf 301. Da PHP-Um­lei­tun­gen nor­ma­ler­wei­se temporär sind, muss man die per­ma­nen­te Variante explizit angeben. Die Ziel-URL wird in Zeile 03 ebenfalls per header definiert (hier http://www.beispiel.de). Das exit in Zeile 04 stoppt das Script sofort, damit kein weiterer Code mehr geladen wird. Wichtig: Dieser Block muss ganz oben stehen, noch bevor der Server ir­gend­wel­chen HTML-Code ausgibt.

Client­ba­sier­te Lösungen

Falls ser­ver­sei­ti­ge Optionen wegfallen, gibt es client­ba­sier­te Auswege: das HTML-Meta-Tag refresh oder Ja­va­Script. Der Haken: Der Server sendet keinen Status-Code. Browser und Crawler wissen also nicht offiziell Bescheid. Zudem igno­rie­ren manche Programme diese Befehle, was dazu führen kann, dass Nutzer:innen im Leeren landen.

Auch für die Such­ma­schi­nen­op­ti­mie­rung sind diese Methoden sub­op­ti­mal. Ohne den 301-Status kon­kur­rie­ren Quell- und Zielseite oft im Ranking. Während ser­ver­sei­ti­ge Wechsel für User fast unbemerkt ablaufen, bemerkt man bei client­ba­sier­ten Lösungen meist eine kurze Ver­zö­ge­rung.

Umleitung per HTML-Meta-Refresh

Hier nutzt man Meta-Tags mit dem Attribut http-equiv. Du erstellst eine schlichte HTML-Datei mit dem Tag im Header. Ein kurzer Text wie „Du wirst in wenigen Au­gen­bli­cken wei­ter­ge­lei­tet“ hilft deiner Kund­schaft, sich zu ori­en­tie­ren. So sieht der Code für einen Meta-Refresh aus:

Das Tag http-equiv="refresh" weist den Browser an, die Domain zu wechseln. Wann und wohin es geht, steht im Content-Attribut. Im Beispiel erfolgt der Sprung nach zehn Sekunden zur Adresse www.beispiel.de.

<meta http-equiv="refresh" content="10; url=http://www.beispiel.de/">
html

Ja­va­Script-Redirect

Ja­va­Script ist ein weiterer Weg für cli­ent­sei­ti­ge Um­lei­tun­gen. Aber Vorsicht: Genau wie beim refresh-Tag solltest du Ja­va­Script nur sparsam einsetzen. Manche Browser oder Si­cher­heits-Addons blo­ckie­ren die Skript­spra­che. Auch Web­craw­ler haben damit oft ihre Not. So sieht die Umsetzung aus:

<script> 
window.location.replace('http://www.beispiel.de'); 
</script>
html

Ent­schei­dend ist Zeile 02. Das Objekt window.location greift die aktuelle Adresse auf, während der Befehl replace den Browser anweist, zur Ziel­adres­se www.beispiel.de zu springen.

Zum Hauptmenü