PHP-Umleitung "intern" auf WebServer möglich ?

FRitter

Erfahrenes Mitglied
Hallo an alle!

Bislang habe ich folgendermaßen den URL des Clients ausgelesen und dann entsprechend umgeleitet:

Code:
.....

$domainname = getenv("HTTP_HOST");
$domainname = strtolower("$domainname");

if ($domainname == "www.xyz.de" || $domainname == "xyz.de") {
header ('Location: http://www.abcd.de');
exit;
}

.....

Soweit funktioniert das mit versch. Domains einwandfrei, allerdings ist es ja eine Weiterleitung, so dass im Browser die ursprüngliche Adresse verschwindet. Jetzt wird jeder von euch a.d. Möglichkeit einer "Frame-Umleitung" denken - aber auch dann habe ich immerhin noch i.d. Statusleiste des Browsers (unten) den "unerwünschten" URL angezeigt (die Adresszeile ist dann schon korrekt).

Zum WebServer-Hintergrund (IIS5 auf Win2K-Server): Es laufen mehrere WebSites in versch. Verzeichnissen, welche über separate Standarddokumente angesprochen werden. Aufgrung der Vielzahl kann ich nicht für jede Site einen eigenen, virtuellen WebServer einrichten und muss es über einen mit versch. Unterverzeichnissen abwickeln.

Leider kann ich aber im IIS nur für die "Stamm-WebSites" einen Hostheader -Namen verwenden - muss aber die einzelnen Unterverzeichnisse von einer einzigen WebSite in dieser Art zuordnen.

Ich hoffe, dass das Problem einigermaßen zu verstehen ist...

Gibt es in PHP eine Möglichkeit, eine soz. interne Umleitung auf andere Ordner vorzunehmen ? Ansonsten weiß ich wirklich nicht, wie ich das Problem lösen sollte :( .

Schonmal danke für eure Mühe!
 
Dies geht eben Schon, musst um 2 Ecken denken.

Bau eine Seite aus 2 Frames. Beide Weis! Und dann nimmst du dein Frame mit 0Pixel höhe. Danach sendest du einen Parnet Befehl ab und einen refresh innerhalb einer Sekunde. Dann wird die Seite im unteren Frame geladen!
 
Hallo,

obwohl das Thema schon etwas länger her ist, hier eine Frage @Lukasz, da ich noch immer keine Lsg. gefunden habe:

Bitte poste mir mal deinen kompletten Code, den du dafür brauchst. Meinst du einen "parent"-Befehl in JavaScript? Leider kann ich mir deine Lösung nicht genau vorstellen und möchte sie gerne einmal testen...

Ich vermute, dass das ganze hauptsächlich aus JavaScript bestehen wird, eigentlich sollte es möglichst serverbasiert abgewickelt werden, da ja nicht jeder Client zwingend JS aktiviert haben muss (sind zwar fast alle, die es aktiv haben - aber ja nur fast), gegen eine Frame-Verwendung spricht eigentlich nichts.

Schonmal danke an dich (Lukasz) und natürlich auch alle anderen, die Ideen zu dem Thema haben!
 
Hi also ich erkläre es dir mal etwas genauer.

In HTML hast du die Möglichkeit Frames zu erstllen. (Die Seite mehrteilen/aufteilen)!

Beispile

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="contents_of_frame1.html">
<FRAME src="contents_of_frame2.gif">
</FRAMESET>
<FRAME src="contents_of_frame3.html">
<NOFRAMES>
<P>This frameset document contains:
<UL>
<LI><A href="contents_of_frame1.html">Some neat contents</A>
<LI><IMG src="contents_of_frame2.gif" alt="A neat image">
<LI><A href="contents_of_frame3.html">Some other neat contents</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>

hier mal schauen http://www.w3.org/TR/REC-html40/present/frames.html

So jetzt machst du einfach 2 Frames!
Das eine Frame das mit 0 Pixel höhe und 0 Pixel Breite (praktisch unsichtbar) beeinhaltet deine PHP als URL!

Das andere Frame soll 100% höhe und 100% breite haben (also die volle Seite ausfüllen).

Mittels parnet und den Framenamen kannst du dann den Inhalt des Grossen Frames verändern! Dabei bleibt oben die Adresse stehen. Soweit verstanden?
Kommen wir zur Praxis:

Hier habe ich dir einen Text aus dem Netz rausgesucht. Anhand des Beispiels kommst du zu deiner Lösung! PS falls noch Probleme gibt meldest dich!

PHP: Frames nachladen
von Jens Gottfried

So manchen Nachteil der beliebten Frames kann man mit Javascript ausbügeln. Zum Beispiel das Nachladen der Navigation oder anderer Seitenteile, wenn eine Seite über eine Suchmaschine aufgerufen wird. Mit PHP klappt das noch besser.

Wer Frames verwendet, hat seine Gründe. Da ist man wenig erfreut, wenn man hört, dass Seiten quasi nackt und ohne Frames geöffnet werden. So lösen Sie das Problem:

Damit das Frameset nachgeladen werden kann, muss jede Inhalts-Datei um folgendes Script erweitert werden:
PHP:
<?php
$DATEI = "content.php"; #Name der PHP-Datei, die das Script enthält
if($QUERY_STRING != "") $DATEI .= "?".$QUERY_STRING; 

setcookie("FrameInhalt", $DATEI, time()+7200, "/"); if($Frameset != "1")
{
header("Location: http://www.ihredomain.de/frameset.php");
exit; #Vorsichtsmaßnahme, damit kein weiterer Code ausgeführt wird
}
?>
In der ersten Zeile geben Sie den Namen der PHP-Datei an. Verwenden Sie dazu den relativen Pfad der Datei zum Frameset. In der nächsten Zeile werden eventuell vorhandene Parameter automatisch angehängt. Danach schreibt das Script den String in ein Cookie ("FrameInhalt"), das später vom Frameset ausgelesen wird. Zuletzt überprüft das Script, ob ein Frameset existiert anhand eines weiteren Cookies.
Wenn dieses Cookie (namentlich: "Frameset") nicht existiert, oder nicht den Wert 1 hat, wird auf das Frameset umgeleitet.

Wichtig! Dieses Script muss ganz am Beginn der Seite stehen, da sonst ein unerfreulicher Fehler auftritt: "Headers already sent!"

Die Datei mit dem Frameset muss ebenfalls modifiziert werden:
PHP:
<?php
setcookie("Frameset", "1", time()+7200, "/");
if(!isset($FrameInhalt)) $FrameInhalt = "haupt.php";
?>
Dieses Script setzt zuerst das Cookie, welches von den Inhalts-Dateien abgefragt wird. Danach prüft das Script, ob bereits ein Frameinhalt vorgegeben ist. Wenn dies nicht der Fall ist, wird die Startseite als Frameinhalt festgelegt, deren Pfad/Dateinamen Sie beliebig anpassen können.

Zuletzt muss die Datei noch im Frameset angezeigt werden:

<frame name="content" src="<?php print $FrameInhalt; ?>" scrolling="auto">

Die Vorteile dieser Lösung:
Der Besucher bekommt davon nichts mit, da alles serverseitig abläuft. Frames werden erzwungen. Javascript kann der Besucher deaktivieren, PHP nicht.

Die Nachteile:
Cookies müssen akzeptiert werden.
 
Hallo zurück,

nach einer "Pause" habe ich mich etwas näher damit beschäftigt, aber leider habe ich folgendes festgestellt, was sich wohl auch nicht überwinden lässt: Wenn ich ein Frame nachlade, erscheint auf jeden Fall i.d. Statuszeile z.B. "Seite xyz wird geöffnet". Dort ist ja dann immer noch die "echte" URL des Frames zu sehen. Oder habe ich etwas falsch verstanden? Lt. letztem Beitrag soll das Frame doch neu geladen werden, oder?

Außerdem, wenn ich ein Frame von Größe 0 mache, sehe ich immer noch einen kleinen grauen Rand - kann es natürlich mit "noresize" dann nicht verschieben - aber trotzdem sieht man das versteckte Frame etwas...

PS: Eine normale Frame-Umleitung verwende ich schon, so dass in der Adresszeile des Browsers die korrekte URL angezeigt wird - lediglich beim "Überfahren" der Links sowie beim Laden/nachladen der Site im Frame sehe ich die "falsche" URL....

Hoffentlich hat "Lukasz" noch etwas Geduld mit mir! :rolleyes:
 
Zurück