J’ai récemment été confrontée un problème suite à une refonte d’un site tournant sous Spip. La première version du site ne tournait qu’avec des squelettes « rubrique » et n’utilisait pas les articles. C’est déjà relativement curieux comme manière d’utiliser spip et nous devons cette « fameuse » idée au développeur du site..

Lors de la refonte de ce site, il a été décidé de continuer d’utiliser Spip car ce CMS convient tout à fait au client pour faire ses mises à jour. Cependant le nouveau développeur a lui décidé de n’utiliser que les articles et jamais les rubriques… Sur aucune des versions l’url rewriting de spip (urls propres) n’était mise en place, car les développeurs ont décidé de mettre quelques liens en dur dans les squelettes, qui sont d’ailleurs extrèmement nombreux car ils changent au fil des pages du site…

Ce faisant, étant donné que la première version du site avait été indexée par les moteurs de recherche, il m’a fallut faire des redirections 301 des pages présentes dans les index des moteurs vers les nouvelles pages pour ne pas se retrouver sur des 404 ou pire sur des pages catégories n’existant pas dans la nouvelle version et qui affichait donc un template totalement illisible, et pour garder les positions obtenues pendant le référencement précédent. Cependant la redirection 301 via .htaccess ci-dessous ne fonctionnait pas :

Redirect permanent /spip?rubrique1

J’ai donc du chercher une autre manière de procéder et c’est Bastien, de Nexxpix, agence spécialisée dans la création de sites ModX, qui a trouvé la solution que voici. Il y a peut-être moyen de faire plus simple et plus propre mais ça fonctionne :

RewriteCond %{QUERY_STRING} ^rubrique1$
rewriterule ^spip\.php$ [R=301,L]

Etant donné le peu de documentation à ce sujet trouvée sur le web, nous avons pensé qu’il serait utile de partager ces quelques lignes afin d’aider d’autres webmasters proches du désespoir 😉