Aller au contenu

Renvoyer la bonne entête http


sparh

Sujets conseillés

Bonjour,

je travail sur ma page d'erreur.

J'ai ajouté:

ErrorDocument 400 /erreur.php?erreur=400
ErrorDocument 401 /erreur.php?erreur=401
ErrorDocument 402 /erreur.php?erreur=402
ErrorDocument 403 /erreur.php?erreur=403
ErrorDocument 404 /erreur.php?erreur=404
ErrorDocument 405 /erreur.php?erreur=405
ErrorDocument 500 /erreur.php?erreur=500
ErrorDocument 501 /erreur.php?erreur=501
ErrorDocument 502 /erreur.php?erreur=502
ErrorDocument 503 /erreur.php?erreur=503
ErrorDocument 504 /erreur.php?erreur=504
ErrorDocument 505 /erreur.php?erreur=505

dans mon .htaccess et ça marche.

Mais quand je test l'entête http, c'est 200 ok.

Comment renvoyer une entête http en fonction de la variable $erreur que je récupère via GET ?

Merci d'avance ;)

Lien vers le commentaire
Partager sur d’autres sites

en utilisant la fonction header() ?

if(isset($_GET['erreur'])){
switch($_GET['erreur']){
case '501':
header('le bon header de l'erreur');
break;

case '502':
header('le bon header de l'erreur');
break;

// etc...

}

}

un début de réponse, je n'ai pas vérifié

Lien vers le commentaire
Partager sur d’autres sites

Oui merci la question était un peu conne!

Voici ce que me renvoi l'outil du hub:

-----------------------------------------------------------

URL: http://www.exemple.fr/zsegdvhgd

HTTP/1.0 302 Moved Temporarily

Date: Fri, 15 Feb 2008 20:20:53 GMT

Server: Apache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Pragma: no-cache

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=3b48f5435ca0bffe66034cda3e8aec8d; path=/

Location: http://www.exemple.fr/erreur.php?erreur=404

Connection: close

Content-Type: text/html

Redirection vers :

URL: http://www.exemple.fr/erreur.php?erreur=404

HTTP/1.0 404 Not Found

Date: Fri, 15 Feb 2008 20:20:53 GMT

Server: Apache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Pragma: no-cache

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=eb313b86d4d36b4418d3765237877114; path=/

Connection: close

Content-Type: text/html

------------------------------------------------------

Voilà le code que j'utilise dans ma page index.php

$test = mysql_num_rows($res_meta);
if($test == "0")
{
header("HTTP/1.0 404 Not Found");
header("Location: http://www.billionflash.fr/erreur.php?erreur=404");
die();
}

Pourquoi il y a d'abord une redirection avant l'erreur 4004 ?

C'est bon selon vous ?

Modifié par sparh
Lien vers le commentaire
Partager sur d’autres sites

.. Non, ton idée n'est pas bonne,

tu fais croire au moteur que la première est en 302. Alors qu'elle est en 404.

Ton problème est que pour l'exemple :

URL: http://www.exemple.fr/zsegdvhgd

Ca tombe bien sur un fichier, puisque t'es capable d'envoyer une 302.

Au lieu de renvoyer une 302, il te faut renvoyer une 404, mais à partir de ce fichier :)

Sinon, erreur 500, c'est quand t'as plus de serveur :D

Quand t'as plus d'serveur, t'as plus d'fichier non plus :lol:

Lien vers le commentaire
Partager sur d’autres sites

Salut,

je vais ré expliquer mon problème depuis le début.

http://www.exemple.fr/zsegdvhgd correspond en fait à la page http://www.exemple.fr/index.php?var=zsegdvhgd

Quand on arrive sur ma page index.php je test l'existence de la variable zsegdvhgd (ou quoi que ce soit d'autre) dans ma base de onnée.

Si la variable existe dans la base c'est bon on affiche la page sinon erreur 404

Voici le code que j'utilise en haut de ma page index.php

$var = $_GET['var'];
//la requete pour tester l'existence de la variable dans la bdd

$test = mysql_num_rows($res_meta);
if($test == "0") //$var ne correspond a aucun enregistrement donc erreur 404
{
header("HTTP/1.0 404 Not Found");
header("Location: http://www.billionflash.fr/erreur.php?erreur=404");
die();
}

Avec ce système quand la variable n'existe pas on est bien redirigé vers ma page erreur.php?erreur.404

En haut de erreur.php j'ai:

if($_GET['erreur'] == "404")
{
header("HTTP/1.0 404 Not Found");
}

Mais quand je teste l'entête de ma page http://www.exemple.fr/zsegdvhgd (ou http://www.exemple.fr/index.php?var=zsegdvhgd )

c'est une 302 qui mène vers une 404 (cf résultat du test de l'entête http si dessus dans mon message précedent).

Ou est l'erreur ?

Modifié par sparh
Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas pourquoi tu envoies deux fois une entête 404 ???

Une fois dans index.php juste avant ta redirection, et une fois encore au début de erreur.php.

Il faut que tu supprimes l'un des deux. Je dirais celui de erreur.php !

Lien vers le commentaire
Partager sur d’autres sites

Au lieu de faire une redirection avec 'header', tu devrais peut être faire un include, carrément.

Au moins, tu n'aurais pas ces problèmes (a priori..)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

j'y comprends plus rien:

J'ai donc 2 cas de figure:

- http://www.test.fr/zsegdvhgd (das ce cas la page existe, on arrive sur la page on test l'existence de la variable zsegdvhgd dans la base de donnée, si elle n'existe pas erreur 404!) --> a priori dans ce cas mon fichier htaccess ne sert à rien ?

- http://www.test.fr/forum/fgvc (dans ce cas la page n'existe vraiment pas, le fichier htaccess redirige donc automatiquement vers la page prévu à cet effet!)

Dans ce second cas, quand je teste l'entête http, j'ai:

URL: http://www.test.fr/forum/fgvc
HTTP/1.0 302 Found
Date: Sun, 17 Feb 2008 07:46:11 GMT
Server: Apache
Location: http://www.test.fr/erreur.php?erreur=404
Connection: close
Content-Type: text/html; charset=iso-8859-1

Redirection vers :
URL: http://www.test.fr/erreur.php?erreur=404
HTTP/1.0 200 OK
Date: Sun, 17 Feb 2008 07:46:11 GMT
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=4a2be2a7d301f36d139f3e61fe3214f8; path=/
Connection: close
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 6170

??? J'y comprends rien, pourquoi une redirection 302 ?? et pourquoi ma page erreur.php?erreur=404 renvoi finalement 200 ok !?

J'ai pourtant bien spécifié dans mon htaccess

ErrorDocument 404 http://www.test.fr/erreur.php?erreur=404

Modifié par sparh
Lien vers le commentaire
Partager sur d’autres sites

C'est bon j'ai réussis ;)

Alors pour le .htacces il ne fallait pas mettre le chemin complet de la page d'erreur

et dans mon fichier php au lieu de rediriger j'inclus ma page d'erreur (merci Anonymus) avec un die().

Merci à tous

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...