it-swarm.com.de

Wie kann ich einen Fehler 404 in PHP erstellen?

Mein .htaccess leitet alle Anfragen an /Word_here an /page.php?name=Word_here weiter. Das Skript PHP prüft dann, ob sich die angeforderte Seite in ihrem Seitenarray befindet.

Wenn nicht, wie kann ich einen Fehler 404 simulieren? Ich habe es versucht, aber meine 404-Seite, die über ErrorDocument im .htaccess konfiguriert wurde, wurde nicht angezeigt.

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");

Bin ich zu Recht der Meinung, dass es falsch ist, auf meine 404-Fehlerseite umzuleiten?

80
Eric

Die aktuelle Antwort (ab PHP 5.4 oder neuer) zum Generieren von 404-Seiten lautet: http_response_code :

<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();

die() ist nicht unbedingt erforderlich, stellt jedoch sicher, dass Sie die normale Ausführung nicht fortsetzen.

97
blade

Was Sie tun, funktioniert und der Browser erhält einen 404-Code. Was es nicht tun soll, ist die Seite "Nicht gefunden", die Sie möglicherweise erwarten, anzuzeigen, z.

Nicht gefunden

Die angeforderte URL /test.php wurde auf diesem Server nicht gefunden.

Das liegt daran, dass der Webserver diese Seite nicht sendet, wenn PHP einen 404-Code zurückgibt (zumindest Apache nicht). PHP ist dafür verantwortlich, alle eigenen Ausgaben zu senden. Wenn Sie also eine ähnliche Seite wünschen, müssen Sie den HTML-Code selbst senden, z. B .:

<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>

Sie können Apache so konfigurieren, dass dieselbe Seite für seine eigenen 404-Nachrichten verwendet wird, indem Sie dies in httpd.conf eingeben:

ErrorDocument 404 /notFound.php
77
JW.

Versuche dies:

<?php
header("HTTP/1.0 404 Not Found");
?>
20
Ates Goral

Benutzerdefinierte Fehlerseiten über die .htaccess-Datei erstellen

1. 404 - Seite nicht gefunden

 RewriteEngine On
 ErrorDocument 404 /404.html

2. 500 - Interner Serverfehler

RewriteEngine On
ErrorDocument 500 /500.html

3. 403 - Verboten

RewriteEngine On
ErrorDocument 403 /403.html

4. 400 - Schlechte Anfrage

RewriteEngine On
ErrorDocument 400 /400.html

5. 401 - Berechtigung erforderlich

RewriteEngine On
ErrorDocument 401 /401.html

Sie können auch alle Fehler auf eine einzelne Seite umleiten. mögen

RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
6
Irshad Khan

Haben Sie daran gedacht, nach dem Senden der Kopfzeile zu sterben ()? Der 404-Header stoppt die Verarbeitung nicht automatisch, so dass es scheint, als hätte er nichts getan, wenn eine weitere Verarbeitung stattfindet.

Es ist nicht gut, auf Ihre 404-Seite REDIRECTIEREN, aber Sie können den Inhalt davon problemlos einschließen. Auf diese Weise haben Sie eine Seite, die den Status "404" korrekt von der richtigen URL aus sendet. Sie enthält jedoch auch "nach was suchen Sie?" Seite für den menschlichen Leser.

3
Eli

versuche es zu setzen 

ErrorDocument 404 /(root directory)/(error file) 

in .htaccess-Datei.

Tun Sie dies für jeden Fehler, aber ersetzen Sie 404 für Ihren Fehler.

0

Wenn Sie in Wordpress versuchen, einen benutzerdefinierten PHP-Code nicht existieren zu lassen (es sei denn, eine Bedingung ist erfüllt), können Sie Folgendes tun, indem Sie den standardmäßigen Wordpress 404-Handler übernehmen:

<?php
  if(condition){
    do stuff;
  } else {
    include('index.php');
  }
?>
0
Mike Godin