Weiterleitung an verschiedene Ordner
Tom1tk
- php
0 Sönke Tesch0 Tom1tk0 Sönke Tesch
Hallo zusammen,
hat jemand ne schnelle Lösung für folgendes Problem:
Ich hab mehrerer Domains, die alle auf das selbe Verzeichnis im Root verweisen. Dennoch möchte ich, dass in Abhängigkeit der eingebenen Domain der USer auf eine andere Startseite geleitet wird, aber dennoch der Zugriff via Menü auf das gesamte Verzeichnis erhalten bleibt.
Ich dachte daran,
$domain= #####Abfrage auf Domainnamen, aber wie????
if ($domain=="domain1")header("LOCATION: start_dom1.php");
if ($domain=="domain2")header("LOCATION: start_dom2.php");
Gibt es in PHP ne fertig function, die mir die Domain zurückgibt, nicht den ganzen URL??? Wenn ja, wie heißt die, oder hat jemand schon mal so was ähnliches gebastelt??
Thanx for help
Tom1tk
Ich hab mehrerer Domains, die alle auf das selbe Verzeichnis im Root verweisen. Dennoch möchte ich, dass in Abhängigkeit der eingebenen Domain der USer auf eine andere Startseite geleitet wird, aber dennoch der Zugriff via Menü auf das gesamte Verzeichnis erhalten bleibt.
$domain= #####Abfrage auf Domainnamen, aber wie????
Was man Dir alles mitteilt, findest Du mittels
phpinfo(INFO_VARIABLES);
heraus.
if ($domain=="domain1")header("LOCATION: start_dom1.php");
if ($domain=="domain2")header("LOCATION: start_dom2.php");
Wenn überhaupt, dann mit protokollgemäß mit einer absoluten URI:
header("Location: http://example.com/start_dom1.php");
Siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30.
Davon mal abgesehen könnte man das auch noch einfacher lösen, indem man dem Server einfach so einstellt, daß er je nach Domain eine andere Datei als Standard ausspuckt. Beim Apache wäre das die Option DirectoryIndex innerhalb eines <virtualhost>-Blocks.
Diese PHP-Umleiterei wird so langsam ein echtes Kreuz.
Gruß,
soenk.e
Wenn überhaupt, dann mit protokollgemäß mit einer absoluten URI:
header("Location: http://example.com/start_dom1.php");
Hallo nochmals,
geht auf mit einer relativen URL. An meinen Server-Vars kann ich nix rumdrehen. Sind voreingestellt vom Provider, aber vielleicht geht das ja mit pregmatch.... Auch die Direkte weiterleitung via Server an einen Ornder löst das Problem nicht, da ich von allen Domains aus auf alle Ordner meines Projekts zugreifen will.
Thanx
Wenn überhaupt, dann mit protokollgemäß mit einer absoluten URI:
header("Location: http://example.com/start_dom1.php");
geht auf mit einer relativen URL.
Nur weil irgendwelche Browser so nachsichtig sind, derartige Anfänger- und Faulheitsfehler zu korrigieren, heißt das noch lange nicht, daß man derartige Fehler auch machen kann. Protokollstandards sind dazu da, eingehalten zu werden, damit es wirklich bei _jedem_ funktioniert.
Davon mal abgesehen ist es doch nun wirklich kein Problem, da die Domain voranzustellen. Du bekommst -wie ja bereits geschrieben- die nötige Information fix und fertig vom Webserver bzw. PHP geliefert. Was ist so schwer daran, statt dem falschen
header("Location: ".$startseite);
besser das richtige
header("Location: http://".$_SERVER["HTTP_HOST"]."/".$startseite);
zu schreiben?
An meinen Server-Vars kann ich nix rumdrehen. Sind voreingestellt vom Provider,
Vielleicht ist er ja so freundlich und ändert das? Dauert keine zwei Minuten, schonmal gefragt?
Gruß,
soenk.e
Hallo nochmals,
hab natürlich die Hinweise berücksichtigt.
switch ($_SERVER["HTTP_HOST"]) {
case www.domain1.de:
header("Location: http://".$_SERVER["HTTP_HOST"]."/ordner1/);
break;
case www.domain2.de:
header("Location: http://".$_SERVER["HTTP_HOST"]."/ordner2/);
break;
}
Das geht bei mir net. Warum?? Bin schon am zweifeln, ob ich zu blöd dafür bin.
Wenn jemand etwas weiß, oder nen Link für ein Tutorial wäre ich sehr dankbar!
Greets Tom1tk
Hi,
OK, ich gebs zu: Ich bin blöd!!!
Hab nach Location den ":"2 vergessen!
Jetzt gehts.
Was ist aber, wenn jemand "domain.de" eingibt und nicht "www.domain.de" ?? Da muss ich glaub noch ein bischen arbeiten...
Greets
Was ist aber, wenn jemand "domain.de" eingibt und nicht "www.domain.de" ?? Da muss ich glaub noch ein bischen arbeiten...
switch ($_SERVER["HTTP_HOST"]) {
case "www.domain1.de":
case "domain1.de:"
header("Location: http://".$_SERVER["HTTP_HOST"]."/ordner1/);
break;
[usw]
Es wäre allerdings durchaus sinnig, ein- und denselben Server auch nur unter einer Domain (z.B. example.com) laufen zu lassen und alle anderen Domains (z.B. www.example.com) als Weiterleitung dorthin zu nutzen.
Das ist natürlich wieder etwas, was in der Webserver-Konfiguration einzustellen wäre, aber Du kannst es hier ansatzweise durchführen, indem Du in der header()-Zeile, die eh für jede Domain anders aussieht, statt $_SERVER[] direkt die gewünschte Domain angibst:
case "www.example.com":
case "example.com:"
header("Location: http://example.com/ordner1/);
Und ist obendrein auch noch kürzer und übersichtlicher.
Der Vollständigkeit halber sei hier auch noch auf servereigene Hilfsmittel wie mod_rewrite (http://httpd.apache.org/docs/mod/mod_rewrite.html) hingewiesen, mit denen sich die ganze Angelegenheit auch ohne Skriptsprache erledigen lässt.
Gruß,
soenk.e