Mein .htaccess leitet alle Anfragen an /word_here
weiter/page.php?name=word_here
. Das PHP-Skript 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 es hat nicht dazu geführt, dass meine 404-Seite über ErrorDocument
in der .htaccess
Anzeige konfiguriert wurde.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Habe ich Recht, wenn ich denke, dass es falsch ist, auf meine Fehlerseite 404 umzuleiten?
Antworten:
Die aktuelle Antwort (ab PHP 5.4 oder neuer) zum Generieren von 404 Seiten lautet
http_response_code
:die()
ist nicht unbedingt erforderlich, stellt jedoch sicher, dass Sie die normale Ausführung nicht fortsetzen.quelle
Was Sie tun, funktioniert und der Browser erhält einen 404-Code. Was wird es nicht tun wird, ist die Seite "nicht gefunden" anzuzeigen, die Sie möglicherweise erwarten, z.
Nicht gefunden
Die angeforderte URL /test.php wurde auf diesem Server nicht gefunden.
Dies liegt daran, dass der Webserver diese Seite nicht sendet, wenn PHP einen 404-Code zurückgibt (zumindest Apache nicht). PHP ist für das Senden aller eigenen Ausgaben verantwortlich. Wenn Sie also eine ähnliche Seite möchten, müssen Sie den HTML-Code selbst senden, z.
Sie können Apache so konfigurieren, dass dieselbe Seite für seine eigenen 404-Nachrichten verwendet wird, indem Sie dies in httpd.conf einfügen:
quelle
Versuche dies:
quelle
Erstellen Sie benutzerdefinierte Fehlerseiten über die .htaccess-Datei
1. 404 - Seite nicht gefunden
2. 500 - Interner Serverfehler
3. 403 - Verboten
4. 400 - Schlechte Anfrage
5. 401 - Autorisierung erforderlich
Sie können auch alle Fehler auf eine einzelne Seite umleiten. mögen
quelle
Haben Sie daran gedacht, nach dem Senden des Headers zu sterben ()? Der 404-Header stoppt die Verarbeitung nicht automatisch, sodass er möglicherweise nichts getan hat, wenn eine weitere Verarbeitung stattfindet.
Es ist nicht gut, auf Ihre 404-Seite umzuleiten, aber Sie können den Inhalt problemlos einschließen. Auf diese Weise haben Sie eine Seite, die ordnungsgemäß einen 404-Status von der richtigen URL sendet, aber auch Ihre "Was suchen Sie?" Seite für den menschlichen Leser.
quelle
versuche es
in
.htaccess
Datei.Tun Sie dies für jeden Fehler, aber ersetzen Sie Ihren Fehler durch 404.
quelle
Wenn Sie im Drupal- oder Wordpress-CMS (und wahrscheinlich auch in anderen) versuchen, einen benutzerdefinierten PHP-Code als nicht vorhanden erscheinen zu lassen (es sei denn, eine bestimmte Bedingung ist erfüllt), funktioniert Folgendes gut, indem der 404-Handler des CMS übernommen wird:
quelle
Versuchen Sie unmittelbar nach dieser Zeile, die Antwort mit
exit
oder zu schließendie()
oder
quelle
ErrorDocument
, jedoch über PHP.ErrorDocument
hat keine Auswirkung, nachdem Sie den PHP-Code bereits eingegeben haben. Diese Antwort erklärt am besten die Verwirrung, mit der ich vor 9 Jahren$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
Sie stattdessen in Ihrer page.php-Datei. Weil es ein Szenario gibt, in dem eine dieser Seiten eine Abfrage "Name" vom Benutzer erwartet.versuchen Sie dies einmal.
quelle