Es ist oft so, dass eine Domain beim Provider A registriert wurde, die Inhalte aus verschiedenen Gründen beim Provider B liegen (müssen). Ich fasse hier alle mir bekannten Möglichkeiten der Domainweiterleitungen.
Umleitung des A-Records
ist die beste Variante für eine Domain Weiterleitung. Nehmen wir an beim Provider A liegt die Domain und beim Provider B müssen die Daten dieser Domain abgelegt werden. Wenn es der Provider A erlaubt, werden wir bei ihm den A Record für www.meinedomain.de und *.meinedomain.de auf den Webserver des Provider B zeigen lassen. Manche Provider verlangen für diesen Service extra Gebühren.
Nun muss der Provider B auch erlauben, dass Anfragen, die bei „seinem“ Webserver ankommen in ein von uns festgelegtes Verzeichnis geleitet werden. Hier unterscheiden sich die Provider mächtig.
Bei All-inkl.com kann man eine Domain auf dem Server einrichten, selbst wenn diese nicht bei all-inkl.com registriert wurde. Durch die Einrichtung der „externen“ Domain wird dem Apache beigebracht, dass er diese Domain trotzdem als „seine Domain“ betrachten sollte. Host Europe verlangt für diesen Dienst „externe Domain“ 50 Cent pro Domain jährlich.
Wenn es uns gelungen ist, den Apache dazu zu überzeugen, dass er beim Provider B auf den Namen der beim Provider A registrierten Domain hört, müssen wir nur mit den Tools des Provider B die Anfragen in ein Verzeichnis mit den Daten der „meinedomain.de“ leiten.
Weiterleitung mit htaccess
Nehmen wir an beim Provider A liegt die Domain und beim Provider B müssen die Daten abgelegt werden. Eine htaccess Weiterleitung beim Provider A bewirkt beim Browser eine „Umleitung“ zum Provider B. Wichtig! Dies ist jedoch mit dem „Verlust“ des Domainnamens in der URL verbunden.
So funktioniert es :
- Der Browser verlangt www.domain1.de beim Provider A.
- Apache liest aus dem Rootverzeichnis die htaccess Datei und teilt dem Browser mit, dass sich die eigentlichen Daten unter www.domain2.de befinden.
- Der Browser verlangt vom Provider B die Daten der www.domain2.de Domain
- Der Benutzer sieht in seinem Browser die www.domain2.de anstelle www.domain1.de. Das kann störend wirken.
Hier ein Beispiel so einer htaccess Umleitung :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain1\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain2.de/verzeichnis/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^domain1\.de$ [NC]
RewriteRule ^(.*)$ http://www.domain2.de/verzeichnis/$1 [R=301,L]
Erklärung
Eine kurze Erklärung, was genau das oben stehende Skript macht. In der ersten Zeile wird lediglich die RewriteEngine aktiviert, so dass der Apache mit Hilfe des mod_rewrite-Moduls die Anfragen weiterleiten kann.
In Zeile 3 wird die eigentliche Umleitung vorgenommen.
Das NC am Ende der Zeile 2 steht für non-casesensitive, es wird also die Groß-/Kleinschreibung ignoriert. Die RewriteRule in Zeile 3 sorgt dafür, dass alle Anfragen an http://www.domain2.de/verzeichnis gesendet werden. Alle angehängten URL-Pfade werden mit Hilfe des $1-Ausdrucks ebenfalls an die weitergeleitet URL angehängt, so dass keine Parameter, Pfade, etc. verloren gehen.
Die Angabe [L,R=301] am Ende der Zeile 3 sorgt dafür, dass das Rewriting endet (Last-Flag) und die Anfragen mit dem HTTP-Statuscode 301 umgeleitet werden. Es werden durch die Angabe des L-Flags die RewriteRules, die nach dieser Zeile kommen, nicht mehr von mod_rewrite ausgeführt.
„Entführung“ im Frameset
Diese Lösung stellt in meinen Augen die letzte Möglichkeit dar. Der Seiteninhalt wird in einem Frameset weitergeleitet was SEO technisch absolut mangelhaft ist. Sollte daher nur genutzt werden, wenn die vorhergehenden Lösungen nicht zu implementieren sind.
Dazu legt man beim Provider A, der die Domain hostet, in das Rootverzeichnis diese htaccess Datei. Andere index.html oder index.php Datei dürfen in diesem Verzeichnis nicht existieren. Die htaccess bewirkt, dass beim Aufruf der Seite der Inhalt versteckt von einem anderen Server im Frameset inkludiert wird.
Domain per CNAME weiterleiten
to be continued ..
Domain mit einem Loadbalancer weiterleiten
Dazu kann ein Loadbalancer genutzt werden, der anstelle eines Webserver die GET Requests entsprechend beantworten (umleiten) kann.
Hier am Beispiel von einem F5 Loadbalancer :
Zuerst müssen die DNS Anfragen diese Loadbalancer erreichen. Dazu wird eine Delegierung im DNS angelegt
www IN NS meinloadbalancer.meinedomain.de.
Dann muss der Loadbalancer auf diesen Namen hören und mit einem Script (bei F5) den Request beantworten.
epaperimgtest.mydnszone.de" {
# HTTP::header replace Host "d1w38ez8et8rs.cloudfront.net"
HTTP::redirect "http://d1w38ez8et8rs.cloudfront.net[HTTP::uri]"
}