Pavnay

 
  • Increase font size
  • Default font size
  • Decrease font size
FrançaisEnglish

[Apache/Tomcat] Code retour et page 404

Imprimer
Http / Tomcat
Lorsque 2 serveurs d'applications fonctionnent en binôme il n'est pas toujours aisé de gérer correctement les pages d'erreur et parmi elles la fameuse page 404.

Où faut il mettre gérer cette page ? Dans httpd ? Dans tomcat ? Comment être sûr qu'elle soit correctement gérée ?

Lorsqu'il y a 2 serveurs d'applications travaillant pour la même application, il faut savoir quel est le travail de chacun.
Dans le cas du serveur httpd, il s'agit des ressources statiques que sont les pages statiques (.htm et .html), les scripts (.js et .css) et les images (.jpg, .gif, .png). Pour tomcat, il s'agit des servlets et des pages JSP.

Chaque serveur est capable de gérer lui-même la page de retour (et donc le code retour) en cas de ressource introuvable.
Pour httpd, il s'agit de la directive DocumentError prenant 2 paramètres (le code erreur traité et la page qui lui est affectée) (par exemple) :
DocumentError 404 /404.html


et pour tomcat du bloc xml :
        <error-page>
                <error-code>404</error-code>
                <location>/404.jsp</location>
        </error-page>


Le problème qui se pose avec ces 2 serveurs d'applications est qu'il faut unifier les "pages 404".
Il y a plusieurs possibilités :
  • Utiliser 2 pages distincts, une pour httpd et une autre pour tomcat
Le problème de cette solution est qu'il y a donc 2 pages à maintenir en cas de changement par exemple de charte graphique

  • Utiliser une page HTML pour les 2 serveurs d'applications
Si on utilise une simple page HTML, on perd la puissance de Java et donc la possibilté de personnaliser la page d'erreur

  • Utiliser une page JSP pour à la fois httpd et tomcat
En précisant une page JSP à httpd, en cas d'erreur de ressource introuvable, cette page sera bien produite. Cependant, il reste un problème : en appelant par exemple la page 404.jsp, tomcat reverra bien cette page (existante) mais produira en plus un code retour 200 (ressource OK) ce qui est un problème pour les moteurs de recherche (comme google).

La seule solution "satisfaisante" permettant de produire une page d'erreur personnalisable tout en renvoyant le code retour correct (404) est de mettre pour httpd une page d'erreur JSP... inextistante...
Par exemple, pour httpd :
DocumentError 404 /page404Inexistante.jsp #Page inexistante


et pour tomcat :
         <error-page>
                 <error-code>404</error-code>
                 <location>/404.jsp</location> <!-- page existante -->
         </error-page>
 


Donc, en cas de demande d'une ressource statique n'existant pas, httpd tentera de produire une page JSP n'existant pas à tomcat qui prendra à son tour la relève en produisant la bonne page d'erreur en produisant le bon code erreur...

Commentaires
Ajouter un nouveau
+/-
Ecrire un commentaire
Nom:
Email:
 
Titre:
 
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
 

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Actualités

Peinture sur figurine