Wenn zu HTTP-Statuscode?
-
03-07-2019 - |
Frage
Zur Zeit in meinem PHP-Skripte, leite ich den Benutzer auf eine benutzerdefinierte 404-Fehlerseite nicht gefunden, wenn er / sie auf Inhalte zuzugreifen versucht, die nicht für diesen Benutzer existiert oder nicht gehört. Wie so:
header('Location: http://www.mydomain.com/error/notfound/');
exit;
Ich weiß, die obige Header () einen 302-Umleitung Statuscode standardmäßig sendet.
Was ich nicht verstehe, ist aber, wenn ich die 404 nicht gefunden Statuscode senden soll. Bevor leite ich den Benutzer? Oder wenn ich Anzeige der / error / notfound / Seite?
Vielen Dank für Ihre Hilfe!
Lösung
Sie sollten etwas tun:
header("HTTP/1.0 404 Not Found");
include 'error.php';
die();
Andere Tipps
Sie nicht ausführen 404 Fehler als Umleitung überhaupt.
Was Sie wirklich tun möchten, die 404 Status-Header senden, und dann mit dem Körper einer 404-Seite der aktuellen Ausgabe ersetzen.
Es gibt verschiedene Wege, dies zu tun, und es hängt ziemlich viel, wie Sie Ihre Website strukturiert ist. MVC-Anwendungen übergeben typischerweise dies mit einem nach vorn. Ich habe andere Systeme gesehen, dass eine Ausnahme und dann die registrierte Exception-Handler übernimmt die Anzeige der 404-Seite werfen.
Auf jeden Fall die groben Schritte
- Bestimmen Inhalt ist ungültig
- Break aus der aktuellen Ausführung
- Löschen jeder Ausgabe, sollte es jeder.
- Senden Sie den 404 Status-Header
- Senden Sie den Inhalt der Seite 404
Sie können nicht 404 und Location verwenden: zusammen. Die Lage ist nur gültig für einige Antworten (201 und 3xx)
Sie können jedoch benutzerdefinierte HTML-Seite als Körper Ihrer 404-Antwort senden.
Von php.net:
Es gibt zwei Sonderfälle von Header-Anrufe. Die erste ist ein Header, der mit der Zeichenfolge „HTTP /“ beginnt (Fall nicht signifikant), die verwendet wird, um den HTTP-Statuscode, um herauszufinden, zu senden. Zum Beispiel, wenn Sie Apache so konfiguriert haben, eine PHP-Skript zu verwenden, um Anfragen zu bearbeiten für fehlende Dateien (Errordocument verwenden), können Sie sicherstellen, dass Ihr Skript den richtigen Statuscode erzeugt.
<?php
header("HTTP/1.0 404 Not Found");
?>
Sie sollten einen 404 HTTP-Statuscode. Browser und Crawlern verstehen. Sie können auch eine freundlichere Fehlerseite enthalten sein sollen erklären, was passiert ist, einschließlich einer Form Ihrer Website, Soundex Links zu suchen, etc.
A "umleiten" und ein "nicht gefunden" sind unterschiedliche Konzepte.
Welche Datei gefunden werden kann?
http://www.mydomain.com/error/notfound/
oder in
http://www.mydomain.com/not_exist.html
Die " http://www.mydomain.com/not_exist.html " Seite hat einen 404-Header und die „Seite nicht gefunden“ sollte Inhalt.
Ein quickfix könnte sein:
header("HTTP/1.0 404 Not Found");
readfile('http://www.mydomain.com/error/notfound/');
exit;
Dies erfordert jedoch zwei Apache-Anforderungen und ist eine Art böse.