Comment faire une redirection avec un header 404 ?

loupeti

WRInaute discret
Bonjour,
je veux faire une redirection qui renvoi un code d'erreur 404,

j'ai testé celà:
Code:
header("Location: http://www.xxxx.org/erreur-404/,404");

puis celà dans la page 404:
Code:
header('HTTP/1.0 404 Not Found');

celà me renvoi toujours un code 200, comment dois-je my prendre ?
je voudrai que ça me renvoi exactement un code 404 Not Found comme dans le cas d'une veritable erreur 404...
 

loupeti

WRInaute discret
ah joubliai de demander si l'ajout du header status:404 not found est pris en compte même si le veritable code de reponse est 200 Ok ?
 

loupeti

WRInaute discret
je voudria en quelque sorte emuler la fonction ErrorDocument 404 d'apache en php avec les headers...

mais la il me renvoi un code 302 pis un code 200 (evidemment) , c pas une redirectin que je veux faire...
 

loupeti

WRInaute discret
en faisant ça,
ça renvoi une erreur 404 sans afficher la page,

alors j'ai fait une redirection vers la page erreur-404 qui renvoi elle même une erreur 404

redirection vers erreur 404 je suppose que c'est consideré comme une erreur 404,

confirmation ?
 

Tchinkatchuk

WRInaute discret
Pour ma part, cela renvoie un 200 donc c'est pas bon du tout.

je n'arrive vraiment pas à trouver le moyen de faire cela :

une ancien page (un objet) que google recrawl et tombe sur une 404 si l'objet n'existe plus
 

rebouloup

WRInaute discret
Je relance le sujet car je cherche une solution claire et propre au probleme posé ici.

Sur la dernière solution de "loupetiart" :
2 requetes 404 sont envoyées au client, et ca ne me parait pas satisfaisant

Est-il possible de simuler une page 404 parfaitement sur une page intermédiaire existante sans avoir à réinventer la poudre ?
 

rebouloup

WRInaute discret
J'ai cette idée : à confirmer si elle est bonne ... ?

1 - J'appelle une page inexistante sur mon serveur. Par ex. : bidule.html
pour récupérer le source html généré par Apache que je copie

2 - Je créé mon source qui va simuler l'erreur à l'identique d'apache.
Dans un premier temps, le source renvoie (comme propose "loupetiart") l'erreur 404 en php :

<?php header("HTTP/1.1 404 Not Found"); ?>
ou <?php header("Status: 404 Not Found"); ?>

3 - Puis reproduis le contenu html copié
(en gérant dynamiquement les 2,3 éléments qui peuvent se modifier)

L'intérêt d'une telle procedure est de cacher des pages d'un système sécurisé et éviter l'incitation à la curiosité malveillante.

Y a t-il donc une faille à cette proposition ?
 

skippyzrnr

WRInaute impliqué
La solution c'est d'envoyer un header 404 et d'afficher le contenu de la page d'erreur ensuite... Si derrière le header vous faites une redirection avec "location", c'est la réponse 200 de la page de redirection qui sera renvoyée
Il faut faire :

Code:
header("HTTP/1.1 404 Not Found");
echo file_get_contents("lapage404.php");
exit;

et c'est tout ;)
 

Discussions similaires

Haut