wake-up-neo.com

Header ('HTTP / 1.0 404 nicht gefunden'); gar nichts machen

Ich habe eine 404.php-Datei im Hauptverzeichnis meiner Site und habe header('Location: 404.php'); für eine Weile verwendet, bis jemand sagte, dass Sie stattdessen header('HTTP/1.0 404 Not Found'); verwenden sollten. Also habe ich es durch das ersetzt und dann meiner Apache-Konfigurationsdatei ErrorDocument 404 /404.php Hinzugefügt und den Server neu gestartet, aber es funktioniert nicht.

Ich habe verschiedene Varianten ausprobiert, einschließlich ErrorDocument 404 404.php Und ErrorDocument 404 mywebite/404.php, Aber ohne Erfolg.

Was ich damit meine, funktioniert nicht, dass es früher bei Verwendung von header('Location: 404.php'); zur 404.php-Datei umleiten würde, aber wenn ich es durch header('HTTP/1.0 404 Not Found'); ersetze, scheint es nur über die Zeile zu springen und nichts tun. Es wird mit Sicherheit nicht umgeleitet. Der Grund, warum ich die Umleitung anrufe, ist, dass die Seite 404 sein sollte, wenn ein $ _GET-Headerwert nicht erkannt wird.

48
John Smith

Nein, es funktioniert wahrscheinlich tatsächlich. Es ist einfach nicht leicht zu sehen. Versuchen Sie dies, anstatt nur mit dem header -Aufruf, und schließen Sie dann 404.php Ein und rufen Sie dann die auf.

Sie können testen, ob der HTTP/1.0 404 Not Found Funktioniert, indem Sie eine PHP Datei mit dem Namen test.php Mit folgendem Inhalt erstellen:

<?php

header("HTTP/1.0 404 Not Found");
echo "PHP continues.\n";
die();
echo "Not after a die, however.\n";

Dann zeigt das Betrachten des Ergebnisses mit curl -D /dev/stdout:

HTTP/1.0 404 Not Found
Date: Mon, 04 Apr 2011 03:39:06 GMT
Server: Apache
X-Powered-By: PHP/5.3.2
Content-Length: 14
Connection: close
Content-Type: text/html

PHP continues.
77
icktoofay

Sie können versuchen, einen HTTP-Antwortcode anzugeben mit einem optionalen Parameter :

header('HTTP/1.0 404 Not Found', true, 404);
25
Jimmy Sawczuk

Verwenden Sie diese Codes für 404 nicht gefunden.

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

Hier ist 404missing.html Ihre nicht gefundene Entwurfsseite. (es kann .html oder .php sein)

7
Shiv Singh

ich denke, das wird dir helfen

Inhalt von .htaccess

ErrorDocument 404 /error.php
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 405 /error.php
ErrorDocument 406 /error.php
ErrorDocument 409 /error.php
ErrorDocument 413 /error.php
ErrorDocument 414 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php

error.php und .htaccess sollten im selben Verzeichnis abgelegt werden [in diesem Fall]

4
Sourav

Ein weiterer Grund kann sein, dass Sie vor dieser Umleitung ein HTML-Tag hinzufügen. Schauen Sie genau hin, Sie können DOCTYPE oder einen HTML-Kommentar vor dieser Zeile hinterlassen.

2
Jeff_Alieffson

Für PHP> = 5.4 können Sie eine einfachere Funktion wie diese verwenden: http_response_code(404);PHP Documentation

0
Avior