Maik W. aus E.: Redirect mit cgi ins Unterverzeichnis

Guten Tag, alle zusammen,
ich habe hier http://www.teamone.de/selfhtml/sfarchiv/1999_4/t09373.htm#a47365 eine sehr schöne Lösung zur Umleitung einer Zweitdomain in ein Unterverzeichnis der Erstdomain gefunden. Alerdings habe ich scheinbar ein Brett vor dem Kopf, denn irgendwie kriege ich das nicht auseinander bzw. zusammen. Fangen wir mit dem an, das mir klar ist:

index. shtml:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<!--#exec cgi="/cgi-local/pcp_ssi_redirect_1.pl" -->

/cgi-local/pcp_ssi_redirect_1.pl:

$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);

nur mit dem Template hapert es noch, muß ich das jetzt anlegen, wird es erzeugt? habe ich da was ganz falsch verstanden?

Kann jemand von Euch (oder vielleicht K@rl selbst) diese Lücke schließen?

Veilen Dank im Voraus

Grüße

Maik

  1. Hi,

    open (TEMPLATE,$Template) print "Kann $Template nicht öffnen!";

    open(...) or die "Kann $Template nicht oeffnen: $!";

    Wichtig ist das "or", sehr sinnvoll ist das "die" (wozu im Fehlerfall weiter aus einer nicht geöffneten Datei lesen?), hilfreich ist das "$!".

    nur mit dem Template hapert es noch, muß ich das jetzt anlegen, wird es erzeugt?

    Es wird eine Datei geöffnet, diese muß also vorhanden sein. Sie wird zeilenweise gelesen und ausgegeben; wenn in einer Zeile "<!--THEURL-->" vorkommt, wird vor der Ausgabe noch ein Extra-String ausgegeben.

    Sind alle Klarheiten beseitigt? :-)

    Cheatah

    1. Hi,

      Hi Cheatah,

      open (TEMPLATE,$Template) print "Kann $Template nicht öffnen!";

      open(...) or die "Kann $Template nicht oeffnen: $!";

      Wichtig ist das "or", sehr sinnvoll ist das "die" (wozu im Fehlerfall weiter aus einer nicht geöffneten Datei lesen?), hilfreich ist das "$!".

      Is gebongt,aber...

      Es wird eine Datei geöffnet, diese muß also vorhanden sein. Sie wird zeilenweise gelesen und ausgegeben; wenn in einer Zeile "<!--THEURL-->" vorkommt, wird vor der Ausgabe noch ein Extra-String ausgegeben.

      Wenn ich das richtig verstanden habe, wird doch vom Script auf die entsprechend vorbereiteteten Seiten verwiesen, die die eigentlichen index -Seiten sein sollen? Da ich immer nur nen 500 Kriege und -eigentlich- alles ein- und umgestellt habe, weiß ich nicht so recht weiter. Vielleicht liegt der Fehler auch an elementarerer Stelle (nein, die rechte für das Script sind richtig eingestellt...)!?

      Hast Du (oder jemand anders) noh 'nen Tip?

      Sind alle Klarheiten beseitigt? :-)

      Nee, leider nicht

      Grüße

      Maik

      1. Hi,

        Es wird eine Datei geöffnet, diese muß also vorhanden sein. Sie wird zeilenweise gelesen und ausgegeben; wenn in einer Zeile "<!--THEURL-->" vorkommt, wird vor der Ausgabe noch ein Extra-String ausgegeben.

        Wenn ich das richtig verstanden habe, wird doch vom Script auf die entsprechend vorbereiteteten Seiten verwiesen, die die eigentlichen index -Seiten sein sollen?

        nein, ganz offenbar wird unter der URI des Scripts eine HTML-Ausgabe generiert.

        Hast Du (oder jemand anders) noh 'nen Tip?

        Im Error-Log des Servers solltest Du nähere Informationen finden. So pauschal weiß ich auch nicht, woran es liegen könnte.

        Cheatah