Warum sendet meine PHP App keinen 404 Fehler?



Answers

if (strstr($_SERVER['REQUEST_URI'],'index.php')){
    header('HTTP/1.0 404 Not Found');
    echo "<h1>404 Not Found</h1>";
    echo "The page that you have requested could not be found.";
    exit();
}

Wenn Sie sich die letzten beiden Echozeilen ansehen, sehen Sie den Inhalt. Sie können es beliebig anpassen.

Question
if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
    header('HTTP/1.0 404 Not Found');
}

Warum funktioniert das nicht? Ich bekomme eine leere Seite.




Für die Aufzeichnung ist dies der All-Case-Handler:

<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header("Status: 404 Not Found");

$_SERVER['REDIRECT_STATUS'] = 404;
?> <!-- 404 contents below this line -->



Wenn Sie die Standard-404-Seite des Servers anzeigen möchten, können Sie sie in einem solchen Rahmen laden:

echo '<iframe src="/something-bogus" width="100%" height="100%" frameBorder="0" border="0" scrolling="no"></iframe>';



Weißt du, auf meiner Website habe ich so etwas erstellt:

        $uri=$_SERVER['REQUEST_URI'];
        $strpos=strpos($uri, '.php');
        if ($strpos!==false){
        $e404="The page requested by you: &quot".$_SERVER['REQUEST_URI']."&quot, doesn't exists on this server.";
        $maybe=str_replace('.php','',$uri);
        $maybe=str_replace('/','',$maybe);
        die("<center><h1>404</h1><hr><h3>$e404</h3><h3>Maybe try <a href=$maybe>www.leaveyortexthere.p.ht/$maybe</a>?</center>");

}

Ich hoffe es hilft dir.




if($_SERVER['PHP_SELF'] == '/index.php'){ 
   header('HTTP/1.0 404 Not Found');
   echo "<h1>404 Not Found</h1>";
   echo "The page that you have requested could not be found.";
   die;
}

niemals vereinfachen die Echo-Anweisungen, und vergessen Sie nie den Semikolon wie oben, auch warum ein Teilstr auf der Seite laufen, können wir einfach einfach php_self ausführen




Versuche es mit:

header("Status: 404 Not Found");
header('HTTP/1.0 404 Not Found');

Tschüss!




Du machst es richtig, obwohl es etwas verfeinern könnte. Sieht so aus, als ob das angesprochen wurde. Sprechen wir über die Vorteile der praktischen Anwendung:

Eine alte Webseite von uns, die eine große Sammlung von mehrsprachigen technischen Dokumenten enthält, führte dies innerhalb eines if sonst-bedingten:

    if (<no file found>){
        die("NO FILE HERE");
    }

Das Problem (abgesehen von der nicht hilfreichen Nachricht und der schlechten Benutzererfahrung) besteht darin, dass wir in der Regel einen Link-Crawler (in unserem Fall Integrität) verwenden, um fehlerhafte Links und fehlende Dokumente auszuchecken. Das bedeutet, dass wir eine vollkommen korrekte Fehlermeldung 200 no error erhalten haben, die uns mitteilt, dass dort eine Datei vorhanden ist. Da Integrity nicht wusste, dass wir eine PDF-Datei erwarteten, mussten wir manuell einen 404-Header mit PHP hinzufügen. Indem Sie Ihren Code über dem Würfel hinzufügen (weil danach nichts mehr ausgeführt wird und der Header immer vor einem gerenderten HTML-Code stehen sollte), würde die Integrität (die sich mehr oder weniger wie ein Browser verhält) 404 zurückgeben und wir würden genau wissen, wo wir suchen müssen Dateien. Es gibt elegantere Möglichkeiten, dem Benutzer zu sagen, dass ein Fehler vorliegt, aber indem Sie einen 404-Fehler bedienen, benachrichtigen Sie Browser und browserartige Programme nicht nur über den Fehler, sondern (ich glaube - korrigieren Sie mich, wenn ich falsch liege) Aufzeichnen dieser Fehler in Ihren Serverprotokollen, wo Sie problemlos nach 404s suchen können.

    header('HTTP/1.0 404 Not Found');
    die("NO FILE HERE");






Links