De Dotclear à WordPress en passant par Mod_Rewrite

Passer de Dotclear à WordPress, c’était décidé, mais il me fallait tout de même garder fonctionelles toutes les url répertoriées de mon anciens blogs, même si les articles  allaient être déplacés dans le nouveau. Heureusement, la fonction Mod_Rewrite des serveurs Apaches permet de « faire les connections » entres les anciennes url et les nouvelles, « simplement » en configurant les paramètres voulus dans le fichiers .htaccess à la racine du site.

L’intéret est double, d’abord pour que la transition ne perturbe pas les visiteurs, car ils ne doivent jamais tomber sur une page vide (erreur 404) en cliquant sur un lien, il faut donc trouver un système pour faire corespondre deux format d’url, ensuite pour que les moteurs de recherches, au fil de leur visites, enregistrent bien les nouvelles valeurs de vos liens (ils enregistres que les anciennes url ne sont plus existantes et ne gardent que les nouvelles).

Concrètement, la difficulté était de passer des formes d’URL de Dotclear  à celles de WordPress sans trop de problèmes:

URL Dotclear: http://www.alexis.lautre.net/blog/index.php?2008/03/17/50-le-off-200
URL WordPress: http://www.alexis.lautre.net/wp/2008/03/17/le-off-2008/

De même, les adresses des flux RSS différaient:

URL Dotclear: http://www.alexis.lautre.net/blog/rss.php
URL WordPress: http://www.alexis.lautre.net/wp/feed/

Après quelques recherches, j’ai trouvé le code qui correspondait à mes attentes.  Comme cela peut sans doute être utile à d’autres, le voici. Au passage, vous remarquerez aussi la présence de l’indication de pages d’erreur 404/401 spécifiques (qui n’ont rien à voir avec la migration du blog, bien entendu).

#Redirection des articles dotclear vers wordpress
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} [0-9]+/[0-9]+/[0-9]+/[0-9]+-.+
RewriteRule ^blog/index.php$ /%{QUERY_STRING}/? [R=301,L]
RewriteRule ^([0-9]+)[/]([0-9]+)[/]([0-9]+)[/][0-9]+-(.+)$ http://www.alexis.lautre.net/wp/$1/$2/$3/$4? [R=301,L]

#Redirection page d'accueil dotclear vers celle de wordpress
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^blog/$ http://blog.alexis.lautre.net/ [R=301]

#Redirection des flux RSS
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^blog/rss.php$ http://www.alexis.lautre.net/wp/feed/ [R=301]

#ERREURS 404/401 spécifiques
ErrorDocument 404 /divers/404.php
ErrorDocument 401 /divers/401.php

.

Ces liens m’ont été utiles: