Aller au contenu

renvoyer une erreur 404 en php


-ZN-

Sujets conseillés

Bonjour à toutes et à tous,

j'ai un petit souci de rewriting avec un de mes sites, et il faudrait que mon code php renvoie une erreur 404 si il ne trouve pas les infos dans ma BDD (en gros mon rewriting passe des parametres à un script).

Notez que dans mon htaccess j'ai la ligne ErrorDocument 404 /sorry-404.php

Est ce qu'en PHP le code suivant suffit?

header('HTTP/1.0 404 Not Found');
exit;

faut-il rajouter qq chose pour que l'internaute (et googlebot) soit renvoyé vers ma page sorry-404.php ?

merci d'avance pour vos conseils,

ZN

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses,

en fait voila une adresse valide:

http://www.expat-blog.com/fr/destination/oceanie/australie/

et une non valide:

http://www.expat-blog.com/fr/destination/oceanie/australia/ (le nom du pays n'est pas bon)

j'aimerai bien que l'internaute soit renvoyé vers ma 404, c'est quand meme mieux qu'une page toute blanche ;)

Lien vers le commentaire
Partager sur d’autres sites

La "non-valide" retourne bien une entête 404...

Il te manque juste :

header('location: /mapage404.php');

avant le

exit;

de ton exemple.

Lien vers le commentaire
Partager sur d’autres sites

Ben oui, on renvoie d'abord l'entête, puis la page... ;)

Il faut juste éviter de mettre une URL complètement qualifiée (commençant par http://) si on veut garder l'entête 404.

Lien vers le commentaire
Partager sur d’autres sites

Tu me fais douter maintenant ... je fais un test ;)

Manifestement l'entête 404 n'est pas préservée... et de plus les RFC disent que pour le header("location:...") il faut utiliser une URL complète.

Lien vers le commentaire
Partager sur d’autres sites

En envoyant ceci (contenu de la page test.php)

<?php
header('location: index.php', TRUE, 404);
exit();
?>

J'ai ceci comme entêtes :

URL: http://www.webmaster-hub.com/test.php
HTTP/1.1 404 Not Found
Date: Thu, 13 Nov 2008 18:02:20 GMT
Server: Apache
location: index.php
Vary: User-Agent
Content-Length: 0
Connection: close
Content-Type: text/html

Redirection vers :
URL: http://www.webmaster-hub.com/index.php
HTTP/1.1 200 OK
Date: Thu, 13 Nov 2008 18:02:20 GMT
Server: Apache
Set-Cookie: ibf_session_id=828aa75868115f326c6b90bef2f7b355; path=/; domain=.webmaster-hub.com; httponly
Cache-Control: no-cache, must-revalidate, max-age=0
Expires: 0
Pragma: no-cache
Vary: User-Agent
Transfer-Encoding: chunked
Content-Type: text/html;charset=iso-8859-1

Donc j'ai bien une 404 ... mais elle est suivie par une entête 200 (normal vu que la page index.php existe)

Lien vers le commentaire
Partager sur d’autres sites

Dan,

Tes tests donnent des résultats étonnants, même si ce ne sont pas tout à fait ceux espérés. Je pense qu'il faut rester prudent avec le code 200 qui suit un code 404: pas sûr que tous les navigateurs vont suivre ce genre de redirection qui n'en est pas vraiment une.

En pratique, je préférerais placer un include de la page sorry-404.php juste après l'envoi du code 404. Cela devrait donner le résultat recherché par -ZN-.

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Merci à tous les deux pour vous être penché sur mon problème, en effet, c'est "pointu" comme truc, et dès que c'est un peu pointu, je viens chercher des réponses sur le hub ;)

Jean Luc, tu penses à ça ?

<?php
header('HTTP/1.0 404 Not Found');
include('sorry-404.php');
exit;
?>

Je vais continuer à chercher des infos à ce sujet

Lien vers le commentaire
Partager sur d’autres sites

<?php
header('HTTP/1.0 404 Not Found');
include('sorry-404.php');
exit;
?>

Oui, c'est la technique que j'utilise :

On définit l'en-tête comme étant un 404

puis on include le code traitant (et affichant) l'erreur.

Il ne faut pas faire de 'location' sinon on a une redirection.

Lien vers le commentaire
Partager sur d’autres sites

Super merci beaucoup je vais mettre ça en place ce week end, avec cette technique je répare qq problèmes de rewriting, qui remontaient sans cesse dans la console google webmaster tools. Reste à voir si ça aura une influence positive sur l'internaute et les moteurs de recherche, ou rien du tout?

A bientôt,

ZN

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...