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?
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.
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.
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
Versuche dies:
<?php
header("HTTP/1.0 404 Not Found");
?>
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
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.
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.
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');
}
?>