Redirection sur page d'erreur et entête http

WRInaute discret
Bonjour,
Je met actuellement en place une redirection en cas d'erreur 404.
Mais je me m’aperçois de comportement différents suivant la méthode utilisé.
Exemple : je fait une erreur de saisis pour accéder la page contact => contat.html
Pour traiter ça j'ai mis dans mon fichier de traitement :
Code:
header("HTTP/1.1 404 Not Found", false, 404);
	 header('Location: pages/erreur-electric.php');
	exit();
Avec l’analyseur d'entête la page contat.html retourne : HTTP/1.1 302 Moved Temporarily
et la page (erreur-electric.php) qui affiche un message pour le visiteur retourne : HTTP/1.1 200 OK
Ce qui est fort ennuyeux car auccune page informe le moteur de recherche que l'url n'est pas bonne.

Par contre si je modifie mon code php comme ceci :
Code:
header("Status: 404 Not Found", false, 404);
	 header('Location: pages/erreur-electric.php');
	exit();
Je ne suis pas redirigé sur la page (erreur-electric.php). Je reste sur la page contat.html mais j'ai bien un : HTTP/1.1 404 Not Found.

Autre test, j'ai remis le code initial et j'ai ajouté en entête de la page "erreur-electric.php" : header("HTTP/1.1 404 Not Found", false, 404);
Ainsi erreur-electric.php retourne bien : HTTP/1.1 404 Not Found.

Donc mes questions sont :
1 - Pourquoi si j'utilise comme argument dans le header() "Status" au lieu de "HTTP/1.1 ...." la redirection ne se fait pas ?
2 - Dans le 1er cas, les moteurs auront comme instruction une redirection temporaire sur une page qui valide mais inutile car spécifique en cas d'erreur de navigation. Donc inutile et surement mauvais pour le référencement ?!
3 - Quel est la bonne méthode ?

Merci
 
Olivier Duffez (admin)
Membre du personnel
Un code 4xx (notamment 404) est un code indiquant que la page est en erreur, mais il ne doit pas y avoir de redirection (ça, c'est pour un code 3xx par exemple 301 ou 302)

Pour une erreur 404, il n'y a donc pas de redirection à faire, je ne comprends pas bien ton idée.

Si besoin, je t'invite à consulter mes explications sur les redirections et la liste des codes HTTP.
 
Olivier Duffez (admin)
Membre du personnel
il n'y a pas besoin de rediriger, il suffit de définir l'URL de la page d'erreur personnalisée dont le contenu s'affichera en cas d'erreur (mais l'internaute restera avec comme URL celle de la page qu'il voulait consulter)

Pour ça il faut ajouter une instruction du type ErrorDocument 404 :

Code:
ErrorDocument 404 /page-erreur-404-personnalisee.html
 
Discussions similaires
Haut