Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Header("404.....") erzeugt keine Fehlermeldung

0 views
Skip to first unread message

Kai Blankenhorn

unread,
Aug 6, 2001, 6:58:02 AM8/6/01
to
Hallo zusammen!

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

Jan Kneschke

unread,
Aug 6, 2001, 7:03:16 AM8/6/01
to
Kai Blankenhorn wrote:

> 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

Kai Blankenhorn

unread,
Aug 6, 2001, 8:02:53 AM8/6/01
to
> > 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.

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.


Jan Kneschke

unread,
Aug 6, 2001, 8:15:41 AM8/6/01
to
Kai Blankenhorn wrote:

> 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.

Martin Muskulus

unread,
Aug 6, 2001, 9:34:01 AM8/6/01
to
Hallo,

>
> 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

Martin Muskulus

unread,
Aug 6, 2001, 9:37:57 AM8/6/01
to
> Ich habe mir mal folgendes zusammen gebastelt:

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&uuml;nschte
Seite &quot;$fehlt&quot; wurde nicht gefunden.";
break; case 403: $info="Zugriff verweigert:Sie d&uuml;rfen auf dies
Datei nicht zugreifen.";
break; case 401: $info="Authorization ben&ouml;tigt: Sie m&uuml;ssen
mit einem g&uuml;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&uuml;ck
zur vorhergehenden Seite</p>
<p><a href="./"><img border="0" src="/mhp/img/go.gif" alt="go"
width="19" height="19"></a> zur&uuml;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!!

Matthias P. Wuerfl

unread,
Aug 6, 2001, 9:51:08 AM8/6/01
to
-->[Kai Blankenhorn in de.comp.lang.php]<--

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

Kai Blankenhorn

unread,
Aug 6, 2001, 11:59:57 AM8/6/01
to
> 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.

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.


Bjoern Hoehrmann

unread,
Aug 6, 2001, 3:26:44 PM8/6/01
to
* Matthias P. Wuerfl wrote in de.comp.lang.php:

>-->[Kai Blankenhorn in de.comp.lang.php]<--
>
>> 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.

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/

Bjoern Hoehrmann

unread,
Aug 6, 2001, 3:26:45 PM8/6/01
to
* Kai Blankenhorn wrote in de.comp.lang.php:

>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.

Das liegt daran, dass du nichts als eine weisse Seite an den Client
sendest.

0 new messages