|
Error 404 ! C'est ce qui s'affiche sur votre browser lorsque l'URL d'une page n'existe pas, ou plus. La page affichée, au look souvent très roots est en fait affichée le plus souvent par le serveur web (Apache, par exemple) ou par l'hébergeur si celui-ci a pris la peine de modifier la page d'erreur affichée par défaut. Joomla! 1.5 dispose maintenant de son propre système de gestion d'erreur qui permet de personnaliser la page d'erreur, et de la rendre plus conforme à l'aspect général de votre site. Mais...
il convient de généraliser le système à toutes les pages non trouvées.
Explications
Mécanisme natif en Joomla!
Lorsqu'une page n'est pas trouvée, Joomla! 1.5 utilise le fichier templates/system/error.php qui sert à afficher une page d'erreur pour les erreurs HTTP 403 (forbidden), 404 (page not found) et 500 (internal server error). L'aspect de cette page est très "basique". Il est possible de d'utiliser sa propre page en plaçant un fichier error.php dans le répertoire racine du template que vous utilisez.
Exemple, imaginons que vous utilisez le template rhuk_milkyway, il vous faudra alors créer un fichier template/rhuk_milkyway/error.php
A vous de modifier/créer ce fichier de façon à ce qu'il soit en cohérence visuelle avec votre site.
Des informations plus détaillées sont disponibles ici, dans la documentation de Joomla!.
Limitations
D'après mes essais, le mécanisme ne fonctionne que pour les pages dont les extensions correspondent à celles énumérées dans la ligne suivante du fichier .htaccess fourni par Joomla! (les extensions sont en vert):
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
Note: le fichier .htaccess doit évidemment être utilisé pour que le mécanisme soit effectif.
Oui, mais que se passe-t-il si l'URL recherchée ne se termine pas par une de ses extension ? Hé bien dans ce cas, le mécanisme décrit ci-dessus ne fonctionnera pas. Ainsi, l'URL www.monsite.com/une-page.xyz provoquera l'affichage de la page d'erreur du serveur web.
Généralisation du système
Pour généraliser le système, il faut ajouter une ligne dans le fichier .htaccess qui prendra en compte tous les autres cas de figure:
ErrorDocument 404 http://www.monsite.com/ma-page-d-erreur-404-personalisee.html
qui redirigera toutes les autres erreurs 404 vers une page que vous aurez créée.
Tant qu'à faire, pensez à ajouter les lignes suivantes dans votre fichier .htaccess:
ErrorDocument 403 http://www.monsite.com/ma-page-d-erreur-403-personalisee.html ErrorDocument 401 http://www.monsite.com/ma-page-d-erreur-401-personalisee.html ErrorDocument 500 http://www.monsite.com/ma-page-d-erreur-500-personalisee.html
Et pour faire plus joli...
Vous pouvez créer vos pages d'erreur en Joomla!, ce qui aura comme avantage de pouvoir afficher des pages en utilisant le template de votre site.
Admettons que vous ayez créé 2 pages, l'une pour les erreurs 404 (ce sont les plus fréquentes), l'autre pour les autres erreur. Publiez-les... sans les relier à un menu et en les mettant dans des sections et des catégories qui ne sont jamais affichées. Notez l'ID Joomla! de ces pages (admettons par exemple qu'elles ont respectivement l'ID 123 et 124, comme ceux écrits en vert ci-dessous) et modifiez les lignes de votre fichier .htaccess comme indiqué ci-dessous:
ErrorDocument 401 http://www.monsite.com/index.php?option=com_content&view=article&id=124 ErrorDocument 403 http://www.monsite.com/index.php?option=com_content&view=article&id=124 ErrorDocument 404 http://www.monsite.com/index.php?option=com_content&view=article&id=123
Et que devient le fichier error.php propre à votre template ?
Et bien, il n'affichera pas la jolie page d'erreur que vous aurez faite en Joomla!.
Pour contourner ce problème, il suffit de modifier ce fichier error.php pour qu'il effectue une redirection immédiate vers la page d'erreur personnalisée de Joomla!, par exemple en utilisant le contenu suivant:
Page non trouvée - redirection
123" />
Redirection vers la page d'erreur...
Vous allez être redirigé vers une page d'erreur. Si vous n'y êtes pas redirigé d'ici quelques secondes, merci de 123">cliquer ici.
Limitations de la redirection
La redirection présente une limitation: elle ne fonctionne que pour un type d'erreur, en l'occurrence l'erreur 404 pour l'exemple ci-dessus.
Si vous voulez gérer les autres erreurs, il vous faudra créer dynamiquement en php des balises META HTTP-EQUIV="refresh"... en fonction du type d'erreur:
if ($this->error->code = '404') { ligne de code pour la balise dirigeant vers la page 123); } ?>
... petit truc
Si vous avez modifié le nom de certaines pages et que celles-ci sont référencées par d'autres sites, les clicks sur les références vont aboutir sur votre page (maintenant personnalisée) d'erreur 404. Pour contourner le problème, vous pouvez ajouter des lignes semblables à celle reprise ci-dessous dans votre fichier .htaccess:
Redirect permanent /ancien-nom-de-page.html http://www.monsite.com/nouveau-nom-de-page |