Warum zeigt Apache keinen 404 Fehler wenn ich einen 404 Header mit PHP sende?

7

Ich habe ein header('HTTP/1.0 404 Not Found'); irgendwo entlang des Codes, aber es wird aus irgendeinem Grund nicht auf die Standard-404-Seite des Apache umgeleitet.

Ich habe eine Rewrite-Regel für die .htaccess-Datei, die jede Anfrage an index.php weiterleitet. Könnte das das Problem sein?

    
the_drow 07.08.2009, 22:50
quelle

2 Antworten

18

Der Header sagt Apache nicht, dass er seine 404-Seite anzeigen soll. Eher, wenn Apache seine 404-Seite anzeigt, sendet es einen 404-Header mit. Der Header soll eine Bedeutung für den Browser haben, nicht für den Server. Apache zeigt einen 404 an, wenn die richtige Datei nicht gefunden werden kann. Da Sie sich in einem PHP-Skript befinden, hat Apache bereits eine Datei gefunden, die es anzeigen kann, und wird daher keine eigene 404-Seite anzeigen.

    
Amber 07.08.2009, 22:52
quelle
7

Von PHP gesendete Header spielen in diesem Fall nur eine Rolle für den Browser. Apache wird keine eigene Seite erstellen, da Sie die Seite bereits verarbeiten. Wenn Sie etwas senden würden, würden die beiden Konflikte verursachen.

Ja, die Datei .htaccess wird verhindern, dass Apache eine Fehlerseite anzeigt, weil Ihre Regeln Apache glauben lassen, dass es keinen 404 Fehler mehr hat, weil es eine Seite gefunden hat.

Das Senden einer Kopfzeile ist eigentlich nur eine Statusnachricht und bewirkt nicht, dass der Browser oder Server eine bestimmte Seite anzeigt. (Obwohl die meisten Browser dies tun).

Wie Dav in den Kommentaren hervorgehoben hat, möchten Sie 404-Fehler an ihre eigene benutzerdefinierte Fehlerseite senden.

    
Tyler Carter 07.08.2009 22:52
quelle