Tach!
Eure Ausführungen sind mir zu kompliziert. Ich beschäftige mich erst seit einigen Wochen nebenberuflich mit PHP und noch nicht mit Apache.
Das passiert. Ich weiß ja nicht, was dein Wissensstand ist. Wenn du das Thema aber verstehen möchtest, musst du dich zwangsläufig mit dem Apachen und mit HTTP beschäftigen, denn die Unterschiede liegen dort begründet.
Wie du vielleicht weißt, basiert die Kommunikation im Internet auf TCP/IP. Namen existieren da nicht, nur IP-Adressen. Der Einfachheit halber lasse ich mal die Ports aus dem Spiel. DNS-Namen werden erst zu IP-Adressen aufgelöst und dann läuft alles über diese Adressen ab. Das heißt, dass man pro Ziel-IP immer nur ein Angebot laufen lassen kann, denn wenn IP-Adresse A einen Request erhält, wie soll man da wissen, ob das Angebot A1 oder A2 gemeint ist? Nun wollte und konnte man aber nicht jedem Host/Angebot eine eigene IP-Adresse spendieren und auch nicht jedes Angebot auf einem eigenen physikalischen Host laufen lassen. Zumindest für HTTP hat man das Problem so gelöst, dass Clients einen Header namens Host mitschicken, der den jeweils angefragten Hostnamen enthält, im Beispiel also A1 oder A2. Somit kann der Webserver die Anfragen unterscheiden und zum jeweiligen Host weiterleiten, der nun nur noch virtuell ist (=V-Host), weil eine Software viele Hosts simuliert.
Nun kann es aber auch noch sein, dass man innerhalb eines VHosts zusätzlich zum ServerName, also dem Namen des VHosts, mehrere Aliasnamen vergeben kann. Damit kann man dann neben dem Angebote A1 die Unterangebote A11, A12, und so weiter, bereitstellen. Und wenn du nun unterscheiden möchtest, welches Angebot nun konkret angefragt wurden, kannst du in HTTP_HOST schauen, denn dort landet der vom Client mitgegebene Wert aus dem Host-Header.
Wenn ich in der Adresszeile angezeigt bekomme "www.irgendwas.de/haferschleim", in welcher der beiden Variablen kann ich den Wert "irgendwas" mit Sicherheit erwarten?
HTTP_HOST in jedem Fall. Der Apache schreibt diesen Wert aber auch nach SERVER_NAME, was eigentlich der VHost-Name und nicht der angefragte Alias sein sollte. Also zumindest in Abhängigkeit von der Konfiguration UseCanonicalName. Das heißt also, dein gesuchter Wert ist garantiert in HTTP_HOST, kann aber auch ohne Garantie in SERVER_NAME stehen.
dedlfix.