Christian Seiler: Domain-Alias, etc.

Beitrag lesen

Hallo Stefan,

Wenn ein Webbrowser eine URL wie z.B. http://www.selfhtml.org/ aufruft, dann geschieht folgendes: Der Browser fragt das DNS-System nach der IP-Adresse für dem Rechner www.selfhtml.org. Dazu wird im Endeffekt der DNS-Server, der auf selfhtml.org eingetragen ist, gefragt (allerdings gibt es mehrere Zwischenstationen auf dem Web, die das ganze auch zwischenspeichern, damit die Anfragen nicht sehr lange dauern). Dann kennt der Browser die IP des Servers, auf den www.selfhtml.org zeigt.

Nun geschieht folgendes: Der Browser baut eine TCP/IP-Verbindung zu www.selfhtml.org Port 80 auf. Eine TCP/IP-Verbindung kennt keine Hostnamen etc. Sie kennt nur IP-Adressen und Ports. Das heißt, der kontaktierte Server weiß, dass ein anderer Rechner sich zu ihm verbunden hat, er weiß, welche IP-Adresse dieser Client-Rechner verwendet, und er weiß auch, zu welcher IP-Adresse sich dieser Client-Rechner verbunden hat (der Server könnte ja mehrere IP-Adressen haben). Aber der Server hat *keine* Ahnung, was für ein Hostname in der Adresszeile des Browsers steht. Und der Server *kann* es über TCP/IP *nicht* herausbekommen.

Um dieses Dilemma jetzt zu lösen - sonst könnte man nämlich nur einen Host pro IP-Adresse betreiben, gibt es ein Feld in HTTP, das der Browser ab HTTP/1.1 mitschicken *muss*. Dieses Feld heißt 'Host' und gibt an, welcher Hostname in der Adressezeile steht.

Wenn nun im Moment also sowohl www.selfhtml.org als auch de.selfhtml.org auf die IP-Adresse 212.227.118.71 zeigen, dann läuft der Verbindungsaufbau vom Browser zum Webserver erst einmal genau gleich ab. Wenn der Benutzer jedoch die Seite http://www.selfhtml.org/ haben will, wird vereinfacht gesagt folgende Anfrage geschickt:

GET / HTTP/1.1
Host: www.selfhtml.org
Sonstige-Felder: Sonstige Werte

Wenn nun der Benutzer die Seite http://de.selfhtml.org/ haben will, wird folgende Anfrage geschickt:

GET / HTTP/1.1
Host: de.selfhtml.org
Sonstige-Felder: Sonstige Werte

So kann der Server also feststellen, welche Seite er dem Benutzer ausliefern soll.

Damit nun jetzt zwei Domains auf den gleichne Webspace zeigen, gibt es drei Möglichkeiten:

1. Du lässt beide Domains auf die gleiche IP zeigen (CNAME ist da auch eine Option) *und* konfigurierst zwei virtuelle Hosts in der Webserverkonfiguration, die auf das gleiche Verzeichnis zeigen.

2. Du machst eine clientseitige Weiterleitung von Domain A zu Domain B: Über HTTP, meta-Tag, JavaScript oder einer Seite mit dem Text 'bitte folgen Sie diesem Link' wird der Browser von Domain A nach Domain B umgeleitet.

3. Du tunnelst den HTTP-Verkehr auf Domain A: Auf dem Rechner, auf dem Domain A gehostet ist, steht eine Art Proxy-Server zur Verfügung, der für jede Anfrage, die an Domain A gerichtet ist, eine eigene Anfrage an Domain B stellt und die Antwort dann durchgereicht wird. Dies verursacht jedoch den dreifachen Traffic wie die obigen beiden Lösungen.

Lösung 1 wäre am saubersten; Lösung 2 wäre - falls 1 nicht zur Verfügung steht - diejenige, die am meisten Traffic spart; bei Lösung 3 (falls 1 nicht zur Verfügung steht) würde immerhin noch die Domain A in der Adresszeile stehen, im Gegensatz zu Lösung 2. (Ok, man könnte auch per Frameset 'weiterleiten', aber so etwas ist einfach nur ekelhaft)

Viele Grüße,
Christian