Archivage des news et redirection par .htaccess

Les mauvaises habitudes étant les plus difficiles à perdre, me voila embarqué dans un énième changement de la gestion des brèves du site. Les répercussions sont cependant moins importantes qu'auparavant puisque mon nouvel hébergeur offre beaucoup plus de libertés d'adaptations que le précédent.

Ainsi, les news du site ne seront dorénavant plus archivées dans des pages mensuelles (du type 2005_05.html#p153) mais en individuel (news0153.html).

Cela ne modifie fondamentalement rien au contenu, sauf que j'ai maintenant la possibilité de développer un système de commentaires attachés, soit via le formulaire de contact du site, soit par l'insertion d'un formulaire allégé grâce au DOM.

Ce changement d'archivage s'accompagne d'une modification de la page d'accueil : celle-ci ne reprend plus les 5 dernières brèves dans leur intégralité mais uniquement un extrait. Il a fallu aussi adapter le script AutoIt-CMS utilisé pour générer les pages du site. J'expliquerais certaines évolutions dans la brève suivante, notamment la manière de parser un fichier xml.

Mais le point qui me faisait un peu peur, c'est la nécessité de rediriger les internautes vers les nouvelles pages. Je me voyais déjà suant sang et eau à réécrire un par un les anciens documents pour qu'ils pointent sur les nouvelles adresses (même si l'opération aurait été facilité par un petit script AutoIt). J'avais oublié que je n'étais plus hébergé sur Wanadoo !

Avec OVH, j'ai la possibilité de configurer un fichier .htaccess qui, sur un serveur web Apache, permet de paramétrer les réponses à de nombreuses requêtes des visiteurs, comme les messages d'erreur par exemple. Et, quand on souhaite rediriger automatiquement une page qui a changé d'adresse, il y a la commande Redirect :

Redirect permanent /Ancienne_adresse.html http://www.domaine.tld/nouvelle_adresse.html

L'adresse de l'ancienne page est une adresse relative par rapport à la racine du site tandis que la nouvelle adresse doit être une adresse absolue. Soit par exemple :

Redirect permanent /journal/2005_05.html#news152 http://www.omacronides.com/journal/news0152.html

Au lieu d'écrire 152 redirections, correspondant aux 152 brèves publiées sur le site, les expressions régulières sont un moyen simple de synthétiser le tout en quelques lignes avec la commande RedirectMatch :

RedirectMatch ^/journal/200([[0-9]])_([[0-9]]+)\.html#news([[0-9]]{1})$  http://www.omacronides.com/journal/news000$3\.html
RedirectMatch ^/journal/([[0-9]])_([[0-9]]+)\.html#news([[0-9]]{2})$ http://www.omacronides.com/journal/news00$3\.html
RedirectMatch ^/journal/([[0-9]])_([[0-9]]+)\.html#news([[0-9]]{3})$ http://www.omacronides.com/journal/news0$3\.html

Sauf qu'il m'est impossible d'utiliser cette méthode : la commande Redirect (et ses dérivés) ne peut agir sur ce qui suit le dièse (#) dans l'URL (une ancre qui conduit en un point particulier de la page web).

Me voilà donc pour le moment coincé. De plus, comme les adaptations nécessaires après la modification de gestion des brèves ne sont pas encore toutes implémentées dans le code des pages, il risque d'y avoir quelques problèmes de navigation dans les jours qui viennent.

Veuillez m'en excuser.

Ressources et références :

Titre
perlre - Perl regular expressions
Auteurs
  • T. CHRISTIANSEN
Editeur
Perl.com
Remarque
Les expressions régulières.
Titre
Le fichier .htaccess
Auteurs
  • DAN
Editeur
Webmaster Hub
Date
Remarque
Le b.a ba des fichiers .htaccess.
Titre
Mod_rewrite, ou la réécriture des URL "à la volée"
Auteurs
  • DAN
Editeur
Webmaster Hub
Date
Remarque
Pour comprendre ce qu'est la réécriture d'URL mais surtout - dans le cas présent - l'utilisation des expressions régulières dans une commande Apache.
Titre
Module mod_alias
Auteurs
  • DIVERS
Editeur
Apache.org
Remarque
La documentation officielle, plutôt succincte.