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!

War es hilfreich?

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

  1. Bestimmen Inhalt ist ungültig
  2. Break aus der aktuellen Ausführung
  3. Löschen jeder Ausgabe, sollte es jeder.
  4. Senden Sie den 404 Status-Header
  5. 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");
?>

http://us.php.net/manual/en/function .header.php

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top