PB redirection php header(Location: erreur.php?erreur=404)

Statut
N'est pas ouverte pour d'autres réponses.
WRInaute occasionnel
Bonjour à tous,

Après mes recherches sur le forum, je n'ai pas trouvé de soluce adéquate à mon problème.

J'explique:

Le site utilise de l'url rewriting du type

example.com/module/item.html vers example.com?module=module&item=item

Jusque là tout va bien. Ensuite, je teste dans ma base de données si le module demandé dans l'url est valide.

Si le module demandé dans l'url n'est plus valide, je fais une redirection comme ceci:

Code:
header("Status : 404 Not Found");
header("Location: http://www.example.com/errrors/error.php?error=404");

je suis bien redirigé vers ma page mais le header que je reçois ressemble à ceci:



Code:
HTTP/1.1 302 Found
Date: Fri, 02 Dec 2005 21:40:04 GMT
Server: Apache/2.0.53 (Fedora)
X-Powered-By: PHP/4.3.11
Set-Cookie: PHPSESSID=890d179477f97bd823ddd9852e9d
4ed8; path=/
Expires: Mon, 29 Sept 2005 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Last-Modified: Fri, 02 Dec 2005 21:40:04 GMT
Cache-Control: post-check=0, pre-check=0
Status : 404 Not Found
Location: http://www.example.com/errors/error.php?error=404
Content-Length: 16
Connection: close
Content-Type: text/html; charset=ISO-8859-1

Le header donne un HTTP/1.1 302 et après un status 404.

Est-ce correct?

Je ne devrais pas plutôt avoir directement un header HTTP/1.1 404 ???

le quel est pris en compte par Google?
Les moteurs mettront-ils leur index à jour correctement?

je suis perplexe...

Merci de votre aide
 
WRInaute occasionnel
en fait, mon soucis est de savoir si GG prendra en compte le status 404 de ma page malgré le 302 du haut?

si ça ne pose pas de problèmes au moteurs, cel ame convient..

Vous suivez?
 
WRInaute passionné
ajoute :
Code:
<?header("HTTP/1.1 404 ");?>


dans la première ligne de ton fichier error.php ça devrai regler le problème ;)
 
WRInaute occasionnel
mon fichier error a un header adéquat.

le problème vient du fichier qui contrôle la validité de l'url et redirige vers le fichier d'erreur si nécessaire...

tu penses aussi que le "double status 302 et 404" est préjudiciable?
 
WRInaute passionné
je ne sais pas comment t'a fait pour ta redirection mais normalement tan que tu n'a pas decider ci le module est valide ou pas tu ne dois faire aucun appel à header (ni à aucune fonction qui genère un output).
il n'ya pas de raison d'avoir une entete 302 avec un status 404


ceci dit, je ne crois pas que ça poserai problème pour google
 
WRInaute occasionnel
aladdin a dit:
ceci dit, je ne crois pas que ça poserai problème pour google

ça c'est plutôt rassurant....

en fait, pour expliquer le principe, je n'envoie effectivement aucun header avant de vérifier la validité du module.

si il est pas valide je renvoie le header décrit plus haut, sinon, je continue...

c'est pourquoi je comprends pas d'où sort ce 302....

finalement, la page reçue par le visiteur/bot a un header 302, et un status:404...

finalement, la question à se poser est:

GG prend-il en compte l'annonce HTTP1/1 302 ou l'annonce "status:401"???

juste?

qui a une réponse? ou un site qui m'explique la différence entre la réponse header de la première ligne et le header status...

8O
 
WRInaute occasionnel
bon ceci, dit, je vais vérifier mes scripts pour m'assurer qu'aucu header n'est envoyé avant le contrôle de validité du module... c'est peut-être la source du problême... mais las à 1h24 du mat, il faut reposer mes yeux.

a demain et merci de votre aide à tous
 
WRInaute accro
J'ai exactement le même problème:

Dans mon fichier php je spécifie un header 404 et la location de la page 404.

Et pourtant quand j'analyse l'header de la page je me retrouve avec une 302 et un status de 404.

8O
 
WRInaute occasionnel
mais est-ce réellement un problème?!!?

C'est ce que je n'arrive pas à savoir...
 
WRInaute impliqué
C´est logique, puisque la fonction header avec Location: renvoie un code 302... Ce qu´il faut c´est faire une modification de header et faire un include, pas un header Location:. Ou alors, modifier les headers des deux pages.
 
Nouveau WRInaute
Pour résoudre ce probléme il faut que la page sur laquelle est renvoyée l'erreur 404 renvoi elle même un code 404

Pour cela rajoute en tout début de fichier php la ligne suivante:
<?php
header( "Status: 404 Moved Permanently", false, 404);

suite du code....
?>

tu trouveras dans l'entête de la page Status: 404 Moved Permanently qui est la chaine texte saisie. Mais tu aurais pu mettre toto n'est plus ici ou n'importe quoi d'autre.

Mais ce qui te posait problème c'est que tu ne spécifiais pas le code de réponse http. C'est l'intérêt du 404 à la fin du header !

Voilà. C'est tout.
 
Statut
N'est pas ouverte pour d'autres réponses.
Discussions similaires
Haut