Errorcode wie 404 - per Browser (z.B Javascript) abfragen? *träum*
Thomas
- https
0 Markus Mann0 Stefan Muenz0 Michael Schröpl
Hallo erst mal,
Es passiert schon mal, dass eine Seite nicht gefunden wird. Es hängt dann wohl vom Webserver ab, was in diesem Falle angezeigt wird. Was ist aber, wenn ich z.B. in einem Frame eine Seite aufrufen will, der Webserver aber down ist? In diesem Falle wird eine Browser-Standard-Fehlermeldung bzw. -seite angezeigt. (Die Seite konnte nicht angezeigt werden, bla bla)
Ich würde das gerne per Script abfangen.
Damit man sich vorstellen kann, was ich will, schreibe ich mal einen erfundenen Code hin, den es leider nicht gibt, aber genau das machen würde was ich brauche... (nicht lachen! :)
returnCode = openPage("http://www.liefert-eine-fehlermeldung.de");
if(returnCode==404) alert("Da haben wir's");
else if(returnCode==403) alert("Zugriff ist verboten!");
usw...
Ich bin vielleicht ein Träumer :) aber gäbe es eine Möglichkeit, sowas zu programmieren?
Danke im Vorraus
Thomas
Programmieren braucht man da eigentlich nicht sehr viel.
Schau doch mal nach, ob Du an dein .htaccess file im root verzeichnis kommst und dort die Einträge für die einzelnen Fehlermeldungen editieren kannst.
Dort kannst Du beispielsweise sagen, dass bei einem 404-error eine bestimmte html-Datei aufgehen soll.
In diese kannst Du dann ja leicht ein body onload="alert('nene');"
reinschreiben und mit einem Meta Tag wieder auf die Startseite verweisen.
Hoffe, ich konnte Dir weiter helfen.
Grüße,
Markus Mann
http://www.db-sol.com
Hallo erst mal,
Es passiert schon mal, dass eine Seite nicht gefunden wird. Es hängt dann wohl vom Webserver ab, was in diesem Falle angezeigt wird. Was ist aber, wenn ich z.B. in einem Frame eine Seite aufrufen will, der Webserver aber down ist? In diesem Falle wird eine Browser-Standard-Fehlermeldung bzw. -seite angezeigt. (Die Seite konnte nicht angezeigt werden, bla bla)
Ich würde das gerne per Script abfangen.
Damit man sich vorstellen kann, was ich will, schreibe ich mal einen erfundenen Code hin, den es leider nicht gibt, aber genau das machen würde was ich brauche... (nicht lachen! :)
returnCode = openPage("http://www.liefert-eine-fehlermeldung.de");
if(returnCode==404) alert("Da haben wir's");
else if(returnCode==403) alert("Zugriff ist verboten!");usw...
Ich bin vielleicht ein Träumer :) aber gäbe es eine Möglichkeit, sowas zu programmieren?
Danke im Vorraus
Thomas
Hi ;-)
Programmieren braucht man da eigentlich nicht sehr viel.
Schau doch mal nach, ob Du an dein .htaccess file im root verzeichnis kommst und dort die Einträge für die einzelnen Fehlermeldungen editieren kannst.
Dort kannst Du beispielsweise sagen, dass bei einem 404-error eine bestimmte html-Datei aufgehen soll.
... und wenn du jetzt noch ein bisschen programmieren kannst,
uebergibst du statt einer HTML-Datei eben ein Script (Perl, php, etc.), dass dynamisch reagiert - z. B. mit einer Suche nach dem
entsprechenden dateinamen/servernamen/teilen von beidem in einer
internen suchmaschine oder so ...
404s direkt an ein Script zu uebergeben ist IMO eleganter und
performanter als Stefan's Loesung (da das script eben nur dann
ausgefuehrt wird, wenn's die Datei nicht gibt, sonst wird der Link
direkt aufgerufen, nachteil ist eben, dass das nur fuer lokale Links
funktioniert, auf denen du .htacces- bzw. httpd.conf-Zugriff hast).
Ich bin vielleicht ein Träumer :) aber gäbe es eine Möglichkeit, sowas zu programmieren?
"I may be a dreamer, but I'm not the only one ..." ;-))
CU
Tzwenny
Hallo Thomas,
Ich bin vielleicht ein Träumer :) aber gäbe es eine Möglichkeit, sowas zu programmieren?
In JavaScript leider nicht bislang, aber in Perl als CGI-Script.
Solange du sonst nix hast, kannst du deine Links mal so setzen:
<a href="http://www.teamone.de/cgi-local/url.pl?http://www.nicht-vorhanden.de/http://www.yahoo.de/">Link</a>
Zuer Erklaerung:
der Link ruft ein Script hier auf dem Server auf (http://www.teamone.de/cgi-local/url.pl). Das Script bekommt hinter dem Fragezeichen einen Parameterstring uebergeben. Der besteht aus zwei beliebigen URLs, getrennt durch einen Senkrechtstrich .
Die erste der beiden URL ist die, die eigentlich verlinkt werden soll. Die zweite URL wird fuer den Fall aufgerufen, falls die erste nicht existiert. Man koennte die zweite URL also als eine Art "persoenliche 404-Abfangseite" betrachten. Man koennte als zweite URL z.B. eine eigene Seite angeben, die Auskunft darueber gibt, dass der eigentliche Link nicht mehr vorhanden ist. Oder auch einfach die URL der Seite, in der der Link steht - so bleibt der Anwender auf der Seite, wenn der Link nicht funktioniert.
Und damit du auch glaubst, dass es wirklich funktioniert, hier zum Anklicken:
http://www.teamone.de/cgi-local/url.pl?http://www.nicht-vorhanden.de/http://www.yahoo.de/
Und wenn du selber CGI und Perl hast und den TeamOne-Server nicht noch mehr belasten willst als er es eh schon ist, dann kopier dir den Source:
#!/usr/bin/perl
$input = $ENV{'QUERY_STRING'};
if($input eq "") {
print "Content-type: text/html\n\n";
print "<p>Fehler beim Aufruf</p>\n";
exit(0);
}
$input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
($url,$errorurl) = split(//,$input);
use LWP::Simple;
if(head($url)) {
print "Location: $url\n\n";
}
else {
print "Location: $errorurl\n\n";
}
viele Gruesse
Stefan Muenz
Danke, ich denke das ist auf jeden Fall ein guter Ansatz :)
Gruß
Thomas
Noch etwas... das CGI-Script ist nicht schlecht. Persönlich würde mich eine Lösung mit PHP3 sehr interessieren!
Auch wenn Stefan es (noch) nicht mag ;-)
Noch etwas... das CGI-Script ist nicht schlecht. Persönlich würde mich eine Lösung mit PHP3 sehr interessieren!
http://www.php-center.de/artikel/show.php3?id=18
Jan
Hallo Stefan
stellt sich nur die Frage : was passiert wenn der Server mit dem CGI
auch mal offline ist , da kommt dann doch wieder der 404 :)
Also letztendlich ist diese problem einfach nicht wirklich zu lösen ,
sinnvoll finde ich es nur sich auf dem eigenen Server z.B. eigene
404-Seiten zu machen die einem gleich ne Mail schicken wenn ne URL
angefordert wird die nicht vorhanden ist , so das man das gleich
fixen kann , alles andere ist zwar gut gedacht , aber nicht wirklich
besonders sinnvoll.
gruss
Beldin
ab, was in diesem Falle angezeigt wird. Was ist
aber, wenn ich z.B. in einem Frame eine Seite
aufrufen will, der Webserver aber down ist?
In diesem Falle wird eine Browser-Standard-
Fehlermeldung bzw. -seite angezeigt. (Die Seite
konnte nicht angezeigt werden, bla bla)
Ich würde das gerne per Script abfangen.
Ich denke, der Punkt, mit dem die gesamte Diskussion
steht oder fällt, ist, was genau Du unter "der Server
ist down" verstehst.
*Wenn* der Webserver tatsächlich "down" ist, dann
liefert er Dir nicht nur *nicht* das angeforderte
Dokument, sondern auch *keine* 404-Fehlerseite und
auch sonst nichts. (Der Browser generiert dann lokal
eine "timeout"-Meldung - diese müßtest Du eigentlich
behandeln, aber das geht nicht, weil Du den Browser
Deines Besuchers nicht umschreiben kannst.)
Das heißt: Alle hier beschriebenen Ansätze, das Problem
über ein CGI-Skript *auf demselben Server* zu lösen,
sind zum Scheitern verurteilt.
Wenn der Server nicht läuft, dann läuft er nicht.
Falls Dein Problem allerdings *nur* war, tatsächliche
404-Fehler abzufangen (welche der Webserver bei einem
Zugriff auf ein nicht existierendes Dokument erzeugt),
dann geht das am besten auf dem Webserver selbst.
Je nachdem, was der ist bzw. kann, kann man dort mehr
oder weniger elegante Lösungen bauen. Normalerweise ist
"programmieren" hierbei nicht notwendig - eine entspre-
chende Konfiguration des Servers reicht aus.
(Apache: Anweisung "ErrorDocument".)