Ich wäre Dir sehr dankbar, wenn Du dieses Script hier oder auf Deiner Page der Allgemeinheit zur Verfügung stellen könntest.. arbeite nämlich selber derzeit an einer ähnlichen Geschichte (und das funzt nicht so wie gedacht ;-).
Gruss Pepe
Hallo Pepe,
werd' ich machen, kann aber noch etwas dauern, da ich erst noch ein paar Sachen kommentieren muß (ist nicht 100% selbsterklärend). --> kann noch ein paar Tage dauern (je nachdem, wie ich dazu komme). Für den Perl-Kundigen vorab mal der Kern der Lösung:
Kern des Redirects
hier im Beispiel:
- bei Aufruf von hugo.com und hugo.de wird "hugo.html" geladen
- bei Aufruf von blablanet.de, blabla-net.de und ähnlichem und bei
# noch-ne-domain.de wird "eine-startdatei.html" geladen
- .. und zum testen bei localhost kommt "ist-nicht-da.html"
- durch die "i" option beim Vergleich ("/i") isses egal,
# ob z.B. hugo.com oder HUGO.com eingegeben wird.
- in den jeweiligen Dateien ("hugo.html" etc.) befindet sich der
# vollständige HTML Code der jeweiligen Startpage. In diesen Dateien
# sollten dann alle Links auf die jeweiligen Unterverzeichnisse verweisen,
# in denen sich der Rest der HTML-Dateien für die entsprechende
# Domain befinden.
$http_host = $ENV{"HTTP_HOST"};
$request_uri = $ENV{"REQUEST_URI"};
$document_name = $ENV{"DOCUMENT_NAME"};
......
if ($http_host =~ /hugo.com/i)
{$RedirectTemplateFile = "hugo.html";}
elsif ($http_host =~ /hugo.de/i)
{$RedirectTemplateFile = "hugo.html";}
elsif ($http_host =~ /blabla.*net.de/i)
{$RedirectTemplateFile = "eine-startdatei.html";}
elsif ($http_host =~ /noch-ne-domain.de/i)
{$RedirectTemplateFile = "eine-startdatei.html";}
elsif ($http_host =~ /localhost/i)
{$RedirectTemplateFile = "ist-nicht-da.html";}
else {$RedirectTemplateFile = "ist-nicht-da.html";}
......
$Template = $Home . $RedirectTemplateFile; # Die Variable $Home muß natürlich vorher
# mit dem vollständigen Pfad auf
# das Root-Verzeichnis der Webpage
# versehen sein (-> bei der Doku zu eurem
# Webserver nachlesbar). Ist normalerweise
# etwas in der Art
# "/user/webpages/account-name/" .. oder so ..
Die Template-Datei, die sich in dem durch $Home festgelegten Verzeichnis befinden muß
wird geöffnet und ausgegeben. Dabei wird an jeder Stelle, an der in der Template-Datei
die Zeichenkette "<!--THEURL-->" (ohne Anführungsstriche) gefunden wird, die eingetippte
URL eingesetzt.
print "Content-Type: text/html\n\n"; # die "magische" Zeile am Anfang ...
open (TEMPLATE,$Template) print "Kann $Template nicht öffnen!";
while (<TEMPLATE>) {
if (/<!--THEURL-->/) {
print "<font color=red>http://", $http_host, "</font><font color=green>", $request_uri, "</font>";
}
print;
}
close (TEMPLATE);
Anmerkung: kann man auch einfacher machen: einfach open + datei ausgeben + close
---------------
Die Datei index.shtml, in der das SSI eingebunden wird ist sehr groß - ich gebe sie her aber dennoch vollständig wieder:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<!--#exec cgi="/cgi-local/pcp\_ssi\_redirect\_1.pl" -->
~~~~~~~schnapp~~~~~~~~~
\--> das war's
Ich hoffe, das reicht. Viel Spaß beim Basteln!
PS: bei der JavaScript-Lösung ist ein Fehler drin. Es muß natürlich auf Gleichheit und nicht auf Ungleichheit (== und nicht !=) getestet werden. .. aber das habt ihr ja sicher selbst schon bemerkt ;-)