La gestion de redirections d'urls avec Joomla!

Joomla! dispose d'un composant et d'un plugin pour gérer les redirections d'url du site sans avoir à éditer le fichier .htaccess. Cela peut être très utile lorsque l'on supprime du contenu, ou quand on veut changer certaines urls pour améliorer le référencement.

Il faut activer le plugin pour que le composant fonctionne. Il suffit pour cela d'aller dans Extensions > Gestion des plug-ins et de taper redirection ou redirect dans le champs de recherche. On peut activer le plugin et choisir ou non de collecter les urls. "Cette option contrôle la collecte des URLs. C'est utile pour éviter une charge inutile sur la base de données.". La collecte d'urls va enregistrer toutes les erreurs 404 du site, parfois ces erreurs peuvent paraître un peu loufoques car générées par des moteurs de recherches, des bots, ou encore des hackers, cela peut donc vite engorger la base de données et donc impacter les performances du serveur.

Puis, on peut aller dans Composants > Redirection pour retrouver le tableau de Gestion de la redirection.

Pour créer une redirection, il suffit de cliquer sur Nouveau, puis de renseigner l'url d'origine et l'url cible dans les champs de formulaire. On peut aussi ajouter un commentaire pour la redirection, et si l'on a au préalable activé l'option Activate Advanced Mode quelque peu cachée dans les paramètres du composants, on peut aussi ajouter le code de redirection dans la longue liste proposée (la redirection 301 étant sélectionnée par défaut).

La liste de statuts proposés :

HTTP/1.1 100 Continue
HTTP/1.1 101 Switching Protocols
HTTP/1.1 102 Processing
HTTP/1.1 200 OK
HTTP/1.1 201 Created
HTTP/1.1 202 Accepted
HTTP/1.1 203 Non-Authoritative Information
HTTP/1.1 204 No Content
HTTP/1.1 205 Reset Content
HTTP/1.1 206 Partial Content
HTTP/1.1 207 Multi-Status
HTTP/1.1 208 Already Reported
HTTP/1.1 226 IM Used
HTTP/1.1 300 Multiple Choices
HTTP/1.1 301 Moved Permanently
HTTP/1.1 302 Found
HTTP/1.1 303 See other
HTTP/1.1 304 Not Modified
HTTP/1.1 305 Use Proxy
HTTP/1.1 306 (Unused)
HTTP/1.1 307 Temporary Redirect
HTTP/1.1 308 Permanent Redirect
HTTP/1.1 400 Bad Request
HTTP/1.1 401 Unauthorized
HTTP/1.1 402 Payment Required
HTTP/1.1 403 Forbidden
HTTP/1.1 404 Not Found
HTTP/1.1 405 Method Not Allowed
HTTP/1.1 406 Not Acceptable
HTTP/1.1 407 Proxy Authentication Required
HTTP/1.1 408 Request Timeout
HTTP/1.1 409 Conflict
HTTP/1.1 410 Gone
HTTP/1.1 411 Length Required
HTTP/1.1 412 Precondition Failed
HTTP/1.1 413 Payload Too Large
HTTP/1.1 414 URI Too Long
HTTP/1.1 415 Unsupported Media Type
HTTP/1.1 416 Requested Range Not Satisfiable
HTTP/1.1 417 Expectation Failed
HTTP/1.1 418 I'm a teapot
HTTP/1.1 422 Unprocessable Entity
HTTP/1.1 423 Locked
HTTP/1.1 424 Failed Dependency
HTTP/1.1 425 Reserved for WebDAV advanced collections expired proposal
HTTP/1.1 426 Upgrade Required
HTTP/1.1 428 Precondition Required
HTTP/1.1 429 Too Many Requests
HTTP/1.1 431 Request Header Fields Too Large
HTTP/1.1 500 Internal Server Error
HTTP/1.1 501 Not Implemented
HTTP/1.1 502 Bad Gateway
HTTP/1.1 503 Service Unavailable
HTTP/1.1 504 Gateway Timeout
HTTP/1.1 505 HTTP Version Not Supported
HTTP/1.1 506 Variant Also Negotiates (Experimental)
HTTP/1.1 507 Insufficient Storage
HTTP/1.1 508 Loop Detected
HTTP/1.1 510 Not Extended
HTTP/1.1 511 Network Authentication Required

Si l'on veut garder la collecte d'url active pour une gestion plus complète et fine des erreurs 404, qui permettrait entre autres de détecter les liens externes sur lesquels il pourrait y avoir des erreurs et rediriger correctement les visiteurs, il faudra penser à nettoyer la liste régulièrement pour que la table ne soit pas trop lourde.

À la main dans l'administration cela peut s'avérer très long, donc on peut aussi se connecter à la base avec phpMyAdmin pour vider en une commande toutes les redirections non publiées par exemple :

DELETE FROM `prefixeDeLaBase_redirect_links` WHERE `published` IN (0,2,-2)

En changeant prefixeDeLaBase par votre préfixe.

Et pour aller un peu plus loin, on pourrait envisager de créer un script sur le serveur qui se chargerait de nettoyer la base régulièrement - et surtout automatiquement - avec une tâche planifiée (cron job).

BLOG COMMENTS POWERED BY DISQUS