Adresszeile auswerten
Ralf Boppel
- php
0 Der Martin1 dedlfix
Hallo Forenteilnehmer,
nachdem ich mit Google nicht fuendig geworden bin versuche ich hier Hilfe zu bekommen.
Folgendes Problem: Wie kann ich die Adresszeile auswerten (also den kompletten Request)?
Ich betreibe eine Homepage, die lokalisierte Angaben fuer mehrere Laender beinhalten soll. Es sind in jedem Land diverse Domains registriert. Je nach Herkunft wird auf eine Subdomain weitergeleitet. Die Daten liegen auf dem Zielserver alle im selben Verzeichnis.
z.B.
farben.at wird zu at.domain.test/farben.php
numbers.uk wird zu uk.domain.test/zahlen.php
buchstaben.de wird zu de.domain.test/buchstaben.php
firma.at wird zu at.domain.test
firma.de zu de.domain.test
firma.fr zu fr.domain.test
usw.
Es wird also, wenn eine gezielte Domain aufgerufen wird gleich die entsprechnde Produktseite geoeffnet.
Nun soll, neben der ggfs. anderen Sprache (deutsch, englisch) auch je nach Land andere Texte (Adresse, Kundenhotline, Servicepartner - ggfs. andere Artikel, falls fuer den entsprechenden Markt nicht verfuegbar oder zulaessig) angezeigt werden. Das ist soweit auch bereits alles realisiert. Mein Problem ist nur, wie komme ich an die entsprechende Subdomain? - bzw. wie komme ich an die angefragte komplette Adresse?
Ein weiteres Problem besteht darin, dass die ganzen Domains teilweise ueber verschiedene Provider/Registrare/.... gehen. Der Request der auf dem Server ankommt hat bereits die Struktur xx.domain.test.
Bereits schon mal Danke fuer hilfreiche Beitraege.
Hallo,
Folgendes Problem: Wie kann ich die Adresszeile auswerten (also den kompletten Request)?
suchst du vielleicht $_SERVER['REQUEST_URI']?
Der Request der auf dem Server ankommt hat bereits die Struktur xx.domain.test.
Dann hast du an der Stelle keine Chance mehr, die ursprünglich angeforderte URL herauszufinden und solltest das Konzept überdenken.
So long,
Martin
Hallo,
Folgendes Problem: Wie kann ich die Adresszeile auswerten (also den kompletten Request)?
suchst du vielleicht $_SERVER['REQUEST_URI']?
Nein, das liefert mir ja erst alles nach der Domain ...
Der Request der auf dem Server ankommt hat bereits die Struktur xx.domain.test.
Dann hast du an der Stelle keine Chance mehr, die ursprünglich angeforderte URL herauszufinden und solltest das Konzept überdenken.
Ok, bin ja bereit ;) - Was waeren die Ideen? - Cookies mag ich nicht verwenden (zumal es mit verschiedenen Domains ohnehin problematisch sein duerfte) und verschiedene Verzeichnisse auf dem Zielserver erhoehen den Pflegeaufwand immens.
Ich sehe derzeit nur zwei brauchbare Loesungen:
a) Parameter mit dem URL uebergeben (domain.test/?var=de)
b) virtuelle Verzeichnisse
nur bin ich mir bei b) nicht sicher, ob das so funktionieren koennte, wie ich es mir vorstelle (irgendwelche Modifikationen an der .htaccess wie z.B. Redirect 301 /at /de?var=de)
Finde allerdings beide Loesungen nicht so toll. Wenn es was eleganteres gibt, dann nur her damit
Danke und Gruss
Ralf
Finde allerdings beide Loesungen nicht so toll. Wenn es was eleganteres gibt, dann nur her damit
Wie wäre es mit Content negotiation - zumindest für die Sprachvarianzen?
Siechfred
Hallo,
schau mal was echo $_SERVER['SERVER_NAME'];
ausgibt.
MfG
Hallo,
... und $_SERVER['HTTP_HOST'];
is bestimmt auch nich schlecht.
Wenn nichts hilft, schau hier mal nach, oder lass mal das hier laufen, und schau, wo das rauskommt, was du willst:
foreach($_SERVER as $name => $ausg)
{
echo '$_SERVER[\''.$name.'\'] => '.$ausg.'<br><br>';
}
//oder:
var_dump($_SERVER);
(ich sollte vllt. nachdenken, bevor ich was poste, und merke, dass es nich vollständig ist... :-D)
MfG
echo $begrüßung;
Folgendes Problem: Wie kann ich die Adresszeile auswerten (also den kompletten Request)?
Die Adresszeile des Browsers und der HTTP-Request sind nicht das selbe. In HTTP 1.0 erfuhr der Server noch nicht einmal, welcher Hostname aufgerufen wurde, da er vom Client in die IP-Adresse aufgelöst wurde und ihn der Server nicht zu Gesicht bekam. Ein (minimaler) Request sah so aus:
GET /path/to/document HTTP/1.0
In HTTP 1.1 kam der Host-Header hinzu, so dass nun auch unter einer IP-Adresse mehrere Hostnamen unterschieden werden konnten:
GET /path/to/document HTTP/1.1
Host: www.example.org
Alles was PHP zum Request weiß steht im Array $_SERVER, und das kann je nach Server-Software auch noch unterschiedlich aussehen.
echo "$verabschiedung $name";