if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
Warum funktioniert das nicht? Ich bekomme eine leere Seite.
php
header
http-status-code-404
Danorton
quelle
quelle
Antworten:
Ihr Code ist technisch korrekt. Wenn Sie sich die Kopfzeilen dieser leeren Seite ansehen, sehen Sie eine 404-Kopfzeile, und andere Computer / Programme können die Antwort korrekt als nicht gefundene Datei identifizieren.
Natürlich sind Ihre Benutzer immer noch SOL. Normalerweise werden 404s vom Webserver verarbeitet.
Das Problem ist, dass der Webserver, sobald er mit der Verarbeitung der PHP-Seite beginnt, bereits den Punkt überschritten hat, an dem er einen 404 verarbeiten würde
Zusätzlich zur Bereitstellung eines 404-Headers ist PHP jetzt für die Ausgabe der eigentlichen 404-Seite verantwortlich.
quelle
Wenn Sie sich die letzten beiden Echozeilen ansehen, sehen Sie dort den Inhalt. Sie können es anpassen, wie Sie möchten.
quelle
Das ist korrektes Verhalten . Es liegt an Ihnen, den Inhalt für die 404-Seite zu erstellen.
Der 404-Header wird von Spider und Download-Managern verwendet, um festzustellen, ob die Datei vorhanden ist.
(Eine Seite mit einem 404-Header wird von Google oder anderen Suchmaschinen nicht indiziert.)
Normale Benutzer sehen sich jedoch keine http-Header an und verwenden die Seite als normale Seite.
quelle
Für die Aufzeichnung ist dies der All-Case-Handler:
quelle
die()
erforderlich?Laden Sie die Standard-Server-404-Seite, falls Sie eine haben, z. B. für Apache definiert:
quelle
Seit PHP 5.4 können Sie jetzt tun
http_response_code(404);
quelle
Eine andere Lösung, basierend auf @ Kitet's.
Wenn Sie eine Website programmieren, die auf einem Server gehostet wird, über den Sie keine Kontrolle haben, wissen Sie nicht, welche Datei "404missing.html" ist. Sie können dies jedoch trotzdem tun.
Auf diese Weise haben Sie genau das gleiche Ergebnis einer normalen 404-Seite auf demselben Server bereitgestellt. Ein Beobachter kann nicht zwischen einer vorhandenen PHP-Seitenrückgabe 404 und einer nicht vorhandenen Seite unterscheiden.
quelle
Versuche es mit:
Tschüss!
quelle
Eine etwas kürzere Version. Unterdrücke ungerades Echo.
quelle
Vereinfachen Sie niemals die Echo-Anweisungen und vergessen Sie niemals das Semikolon wie oben. Warum auch ein Substr auf der Seite ausführen? Wir können einfach nur php_self ausführen
quelle
Wenn die Standardfehlerseite des Servers angezeigt werden soll, müssen Sie dies auf dem Server behandeln.
quelle
Du machst es richtig, obwohl es etwas verfeinert werden könnte. Sieht so aus, als wäre das behoben worden. Sprechen wir also über die praktischen Anwendungsvorteile:
Eine alte Website von uns, die eine große Sammlung mehrsprachiger technischer Dokumente enthält, führte dies in einer wenn sonst bedingten Bedingung aus:
Das Problem (neben der nicht hilfreichen Nachricht und der schlechten Benutzererfahrung) besteht darin, dass wir im Allgemeinen einen Linkcrawler (in unserem Fall Integrität) verwenden, um fehlerhafte Links und fehlende Dokumente zu überprüfen. Dies bedeutet, dass wir eine vollkommen korrekte 200-Fehler-Antwort erhalten haben, die uns mitteilt, dass dort eine Datei vorhanden ist. Integrity wusste nicht, dass wir ein PDF erwarten, also mussten wir manuell einen 404-Header mit PHP hinzufügen. Wenn Sie Ihren Code über dem Würfel hinzufügen (da danach nichts mehr ausgeführt werden würde und der Header ohnehin immer vor einem gerenderten HTML-Code stehen sollte), würde die Integrität (die sich mehr oder weniger wie ein Browser verhält) einen 404 zurückgeben und wir würden genau wissen, wo wir nach fehlenden suchen müssen Dateien. Es gibt elegantere Möglichkeiten, dem Benutzer mitzuteilen, dass ein Fehler vorliegt.
quelle
Versuche dies:
quelle
Weißt du, auf meiner Website habe ich so etwas erstellt:
Ich hoffe es hilft dir.
quelle
Ich bin auf dieses Problem gestoßen. Ich denke, dass das Umleiten zu einem nicht vorhandenen Link auf Ihrem Server den Trick tun könnte! Weil der Server seine 404 zurückgeben würde:
header('Redirect abbb.404.nonexist');
<das existiert nicht sicherquelle
Wenn Sie die 404-Standardseite des Servers anzeigen möchten, können Sie sie in einen Frame wie den folgenden laden:
quelle