Ich will künstlich einen Serverfehler erzeugen. Aber egal, was ich mache:
Header("Status 404 Not Found");
Header("Status: 404 Not Found");
Header("HTTP/1.0 404 Not Found");
Immer bekomme ich statt der Server-Fehlermeldung einfach eine weisse Seite.
Eine Weiterleitung zum Beispiel funktioniert zwar:
Header("Status 301 Moved Permanently");
Header("Location: http://www.yahoo.de");
aber das liegt glaube ich eher an dem Location-Feld als am 301-Header.
Ich möchte aber zur Fehlerseite des Webservers geleitet werden. Oder ich
möchte einen 403 Forbidden zurückgeben... wie könnte das gehen?
Danke!
Kai
> Hallo zusammen!
> Header("HTTP/1.0 404 Not Found");
Der hier ist gut.
Und wenn vorher auch nichts an der Browser geschickt wurde, so funktioniert
das auch sonst immer.
> Kai
--
Jan Kneschke - NetUSE AG - Fon: +49 431 386435 00
Dr.-Hell-Str., D-24107 Kiel, Germany Fax: +49 431 386435 99
Natürlich müsste er funktionieren. Tut er aber nicht. Siehe
http://www.bitfolge.de/header404.php - oder geht es nur bei mir nicht?
Wenn ich die Seite manuell per Telnet anfordere, kommt auch der richtige
Header inkl. 404 und so:
-----schnippschnapp------
GET /header404.php HTTP/1.0
Host: www.bitfolge.de
HTTP/1.1 404 Not Found
Date: Mon, 06 Aug 2001 11:59:52 GMT
Server: Apache
X-Powered-By: PHP/4.0.5
Connection: close
Content-Type: text/html
Connection to host lost.
-----schnippschnapp------
Wenn ich per Telnet eine nicht vorhandene Seite anfordere, kommt im Body der
Response dann die Fehlerseite, und die hätte ich auch gerne.
> GET /header404.php HTTP/1.0
> Host: www.bitfolge.de
>
> HTTP/1.1 404 Not Found
> Date: Mon, 06 Aug 2001 11:59:52 GMT
> Server: Apache
> X-Powered-By: PHP/4.0.5
> Connection: close
> Content-Type: text/html
Wie du siehst klappt alles wie es soll. Du sendest halt mit dem PHP nur
einen leere Seite. Wenn du etwas sehen willst, mußt du was mitsenden.
> Wenn ich per Telnet eine nicht vorhandene Seite anfordere, kommt im Body
> der Response dann die Fehlerseite, und die hätte ich auch gerne.
Die sendet der Webserver für dich.
>
> Ich will künstlich einen Serverfehler erzeugen. Aber egal, was ich
mache:
> Header("Status 404 Not Found");
> Header("Status: 404 Not Found");
> Header("HTTP/1.0 404 Not Found");
> Immer bekomme ich statt der Server-Fehlermeldung einfach eine weisse
Seite.
Ich glaube das Manual sagt aus, dass man mit dem Header den Status
setzt, d.h. der Browser bekommt von dir mitgeteilt, dass jetzt eine
404er Seite kommt und seine angeforderte Seite nicht existiert. Die
Fehlermeldung musst du wohl noch selbst mittels PHP mitschicken.
Ich habe mir mal folgendes zusammen gebastelt:
MfG Martin
Kleines Missgeschick, also Nachtrag:
.htaccess
=========
# Server Error
ErrorDocument 500 /codes.php?500
# Not Found
ErrorDocument 404 /codes.php?404
# Forbidden
ErrorDocument 403 /codes.php?403
# Authorization required
ErrorDocument 401 /codes.php?401
=========
codes.php
=========
<?php
$fehlt=getenv("REQUEST_URI");
switch($QUERY_STRING){
case 500: $info="Interner Server-Fehler: Die aufgerufene Seite
verursachte einen Fehler durch falsche Programmierung.";
break; case 404: $info="Datei nicht gefunden: Die gewünschte
Seite "$fehlt" wurde nicht gefunden.";
break; case 403: $info="Zugriff verweigert:Sie dürfen auf dies
Datei nicht zugreifen.";
break; case 401: $info="Authorization benötigt: Sie müssen
mit einem gültigen Benutzernamen und Passswort nachweisen, dass
Sie berechtigt sind diese Seite zu sehen.";
break;
}
?>
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta name="author" content="Martin Muskulus">
<title>Fehler: <?php echo $QUERY_STRING?> - Martin's Homepage</title>
</head>
<body bgcolor="#99CCFF">
<h2>Na das war wohl nichts!</h2>
<h1><?php echo $QUERY_STRING?></h1>
<h2><?php echo $info?></h2>
<hr>
<p><a href="javascript:history.back()"><img border="0"
src="/mhp/img/go.gif" alt="go" width="19" height="19"></a> zurück
zur vorhergehenden Seite</p>
<p><a href="./"><img border="0" src="/mhp/img/go.gif" alt="go"
width="19" height="19"></a> zurück zur Seiteseite</p>
<?php include("indexbottom.htm")?>
=========
Das ganze funktioniert wunderbar und du kannst deinen Header noch
reinbasteln.
MfG Martin
--
http://www.martin-muskulus.de ENJOY THE WEB!!
> Ich möchte aber zur Fehlerseite des Webservers geleitet werden.
> Oder ich möchte einen 403 Forbidden zurückgeben... wie könnte das
> gehen?
Durch senden eines Headers wird ein Header gesendet und nicht auf
die Fehlerseite des WEbservers weitergeleitet. Das musst Du von Hand
tun. Versuche zusaetzlich zu 404 noch einen Location-header zu
senden. Frage mich ob man das frei nach RFC0815 darf.
Alternative: Include die Fehlerseite nach Senden des Headers.
Gruesse, Matthias
--
Also, ich erklaere Ihnen jetzt die Regierung, und das heisst, ich
erklaere Ihnen, dass sie in Zukunft bitte schoen sich selbst
regieren. Machen Sie doch einfach was Sie wollen. Mach' ich doch
auch. (Andy Mueller-Maghun, Europadirekor von ICANN)
Das steht in RFC 2616, aber da steht auch nichts, dass man das nicht darf.
IE5 und NS4.6 forwarden auch tatsächlich zur richtigen Seite. So mach ich
das jetzt also.
Das wird nicht funktionieren.
>Frage mich ob man das frei nach RFC0815 darf.
RFC 0815 verbietet das nicht, nein...
--
Björn Höhrmann { mailto:bjo...@hoehrmann.de } http://www.bjoernsworld.de
am Badedeich 7 } Telefon: +49(0)4667/981028 { http://bjoern.hoehrmann.de
25899 Dagebüll { PGP Pub. KeyID: 0xA4357E78 } http://www.learn.to/quote/
Das liegt daran, dass du nichts als eine weisse Seite an den Client
sendest.