redirection de pages d'erreurs

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

redirection de pages d'erreurs

Message le Mar Sep 27, 2005 18:06

Hello,
Donc, mieux vaut tard que jamais, je viens de me rendre compte (merci jeunZ) que mes pages dérreur étaient en 302.

Mon problème est donc le suivant :
J'utilise une page d'érreur error.php qui est appélée comme suit dans le .htaccess :

Code: Tout sélectionner
ErrorDocument 400 /error.php?mode=400
ErrorDocument 403 /error.php?mode=403
ErrorDocument 404 /error.php?mode=404
ErrorDocument 500 /error.php?mode=500


L'url finale en cas d'affichage de la page est plus complexe car il intègre des paramètres de recherche.

Des truc du genre error.php?mode=500&blabli&blablo&etencoreblabblabli&etc...

Je ne sais donc pas comment faire pour rétablir le bon http header.

jeunZ suggère d'utiliser plutot des truc du genre ErrorDocument 400 /400.php mais il fadrait alors faire du rewriting pour que 400.php soit reconnu comme /error.php?mode=400&blabli&blablo&etencoreblabblabli&etc...

Ce qui m'as pas lair bien facile si tant est que ce soit faisable.

Enfin si quelqu'un à une idée, je suis preneur.


++


dmathieu
Modérateur
Modérateur
 
Messages: 6930
Inscription: Ven Jan 09, 2004 16:21

Message le Mar Sep 27, 2005 18:14

Code: Tout sélectionner
header('HTTP/1.1 200 OK');

tu remplace l'erreur 302 par une "erreur" 200, qui dit que la page s'est chargée correctement.
et plus aucun probleme ...

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Mar Sep 27, 2005 18:21

KaZhaR a écrit:
Code: Tout sélectionner
header('HTTP/1.1 200 OK');

tu remplace l'erreur 302 par une "erreur" 200, qui dit que la page s'est chargée correctement.
et plus aucun probleme ...


héhé, le problème c'est que je ne sais pas comment envoyer le header.

Dans error.php, j'ai bien :
Code: Tout sélectionner
switch( $mode )
{
   case '400':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_400.'.$phpEx);
      $order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case '401':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_401.'.$phpEx);
      $order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case '403':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_403.'.$phpEx);
      $order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case '404':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_404.'.$phpEx);
      $order_by = "user_posts $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case '500':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_500.'.$phpEx);
      $order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'nimda':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_nimda.'.$phpEx);
      $order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'codered':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_codered.'.$phpEx);
      $order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'badua':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_badua.'.$phpEx);
      $order_by = "user_posts $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'noagent':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_noagent.'.$phpEx);
      $order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'noformmail':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_noformmail.'.$phpEx);
      $order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   case 'leech':
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_leech.'.$phpEx);
      $order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
   default:
      include ($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_error_why.'.$phpEx);
      $order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
      break;
}


Qui me donne envie d'envoyer à ce stade le header approprié, mais je ne sais pas comment cela focntionne. Y a t il une variable ou une fonction consacrée pour apache ou est ce du pur php?

Merci de ta réponse en tous cas ...

++


dmathieu
Modérateur
Modérateur
 
Messages: 6930
Inscription: Ven Jan 09, 2004 16:21

Message le Mar Sep 27, 2005 18:28

la fonction header permet d'envoyer le header.
à utiliser exactement comme je te l'ait donné.

et je te conseille de le placer tout en haut de ta page, tu n'aura pas de probleme de headers already sent comme cela ;)

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Mar Sep 27, 2005 18:57

ahh bah en fait il marche nikel mon truc lol.

C'etais juste $phpbb_root_path = './'; au lien de $phpbb_root_path = '/';, qui bizarrement se retrouvais dans l'url, sauf, encore plus bizarement, pour les 400.

Du coup c'est corrigé et tout marche direct.

Merci encore, rien de tel qu'une piste pour fourrer sont nez dans du code

++

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Mer Sep 28, 2005 13:06

Lol en fait ça ne marchais pas, j'avais le bon header, parce que de faire ce que j'ai fait renvoyais une pure 404 (pas de chargement de error.php), du coup l'outil wri revoyais le bon header lol, mais la page n'existait vraimebt pas.

Donc, je me suis cassé la tête sur ce bout de code :
Code: Tout sélectionner
   redirect($phpbb_root_path . 'error.' . $phpEx . '?mode=' . $mode . '&show&search_keywords=' . $searchinfo[0] . '&search_engine=' . $searchinfo[1] . '&search_engine_url=' . $searchinfo[2] . '&search_engine_count=' . $searchinfo[3] . '&search_start_time=' . (time() - $time));


Qui je le crois est responsable de la 302.

Le problème c'est que j'ai beau eu chercher, je n'ai rien trouver (du tout lol) sur la syntaxe de la fonction redirect, a n'y rien comprendre.
J'aurais espéré que cette fonction integre une option d'envois de header, mais je ne trouve pas.

Du coup je me demande comment faire.

1) redirect peremt il d'envoyer un header ?
2) si non, y'a it moyen, en utilisant le switch que j'ai posté plus haut, d'ajouter à ce stade le bon header calculé plus haut et comment ? (j'ai bien essayé, mais ajouter header('HTTP/1.1 200 OK'); (ou autre) avant ou après le redirect ne change rien.
3) faut il donc enviseager des règle d'url rewriting (404.php => error.php?mode=404&{query string} et comment?

Voilà si vous avez des pistes ....
++

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Jeu Sep 29, 2005 10:27

Bon, bah j'ai eu recours à la méthode forte :
J'ai tout bonnement repris le code de ma page d'erreur pour qu'elle ne se redirige plus vers elle même, et ça marche.
Ah les header !!!

++


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Tester la validité d'un lien
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités