J'ai un fichier 404.php dans le répertoire principal de mon site et j'utilisais header('Location: 404.php');
pendant un certain temps jusqu'à ce que quelqu'un dise que vous devriez utiliser header('HTTP/1.0 404 Not Found');
à la place. Je l'ai donc remplacé par celui-ci, puis j'ai ajouté: ErrorDocument 404 /404.php
À mon fichier de configuration Apache et j'ai redémarré le serveur, mais cela ne fonctionne pas.
J'ai essayé différentes variantes, y compris ErrorDocument 404 404.php
Et ErrorDocument 404 mywebite/404.php
, Mais en vain.
Ce que je veux dire par ne fonctionne pas, c'est que plus tôt en utilisant header('Location: 404.php');
, il serait redirigé vers le fichier 404.php mais lorsque je le remplace par header('HTTP/1.0 404 Not Found');
, il semble que nous sautons simplement la ligne. et ne rien faire. Ce n’est certainement pas une redirection. J'appelle pour la redirection parce que si la valeur d'en-tête $ _GET n'est pas reconnue, la page doit 404.
Non, cela fonctionne probablement. Ce n'est tout simplement pas facilement visible. Au lieu de seulement en utilisant l'appel header
, essayez de faire cela, puis incluez 404.php
, puis en appelant die
.
Vous pouvez tester le fait que le HTTP/1.0 404 Not Found
fonctionne en créant un PHP fichier nommé, disons, test.php
avec ce contenu:
<?php
header("HTTP/1.0 404 Not Found");
echo "PHP continues.\n";
die();
echo "Not after a die, however.\n";
Puis visualiser le résultat avec curl -D /dev/stdout
révèle:
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.
Vous pouvez essayer de spécifier un code de réponse HTTP en utilisant un paramètre facultatif :
header('HTTP/1.0 404 Not Found', true, 404);
Utilisez ces codes pour 404 non trouvé.
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
readfile('404missing.html');
exit();
}
404missing.html est votre page de conception Introuvable. (ça peut être .html ou .php)
je crois que ceci vous aidera
contenu de .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 et .htaccess doivent être placés dans le même répertoire [dans ce cas]
Une autre raison peut être si vous ajoutez une balise HTML avant cette redirection. Regardez attentivement, vous pouvez laisser DOCTYPE ou tout commentaire HTML avant cette ligne.
Pour PHP> = 5.4, vous pouvez utiliser une fonction plus simple comme celle-ci: http_response_code(404);
Documentation PHP