WordPress vs Dotclear : Migration d’automne (dernier round)

Ca va faire des mois que j’y pense – et pas seulement quand je me rase : migrer ce blog vers WordPress ! J’avais commencé une petite liste patiemment annotée avec tous les petits trucs à prendre en compte avant de faire le grand sot saut (lapsus ?) Cette liste, je l’ai perdue… (Acte manqué ?). Je ne sais plus ce qui s’est passé exactement, mais une partie de mon esprit (celle qui avait envie de changement) a pris subitement le contrôle de l’autre partie (vous savez, celle qui remet toujours les choses au lendemain…). Bref, j’ai lancé la migration de mon blog sans trop me poser de questions existentielles :

Pour que cette migration s’effectue dans les meilleures conditions, j’ai suivi les indications données par Ced et celles présentes dans le fichier d’aide du plugin flatimport-addons (voir plus bas).

Installer WordPress 2.3

Je télécharge la dernière version de WordPress sur mon serveur dans mon nouveau répertoire /blog-reloaded et je suis la procédure d’installation qui prend normalement 2 secondes. Comme je commence par une installation de test, je décoche la case concernant l’apparition du blog dans les moteurs de recherche comme Google et Technorati (ok, ça rajoute un 1/10eme de seconde). Je changerai ça plus tard.

Une fois WordPress installé, je me connecte sans rien modifier pour l’instant car le script d’importation a besoin du premier billet présent lors de l’installation pour fonctionner !

Préparer Dotclear 1.2.5

J’installe le plugin pour exporter la base de données sous la forme d’un fichier texte à partir de Dotclear. Comme la structure de la base de données de WordPress a changé, une nouvelle version du plugin flatimport est nécessaire. Rendez-vous à l’adresse http://cvie.free.fr/public/flatimport.txt pour connaitre le plugin qui correspond à votre version de Dotclear : une procédure existe pour tous les cas de figure :

  • pour Dotclear 1.2.3 à 1.2.6 : télécharger les suppléments flatimport (flatimport-addons)
  • pour Dotclear 1.2.7 : télécharger le plugin flatexport du bricoland

les décompresser en utilisant Windows XP ou 7zip ou Winzip ou autres,

Télécharger sur le serveur le répertoire flatExport pour avoir dotclear/ecrire/tools/flatExport

Dans le panneau d’exportation, exporter votre base de données :

  • aller à l’outil Flat file export
  • cliquer sur Export my blog!
  • sauvegarder le fichier blog-backup.txt sur votre disque local.

Bon, j’espère que vous n’êtes pas comme moi, parce que j’ai téléchargé le dossier complet dans /tools, et bien évidemment, ça ne fonctionne pas, il faut juste copier le dossier flatexport ^_^v (voilà ce que c’est de vouloir aller trop vite).

Je garde le fichier blog-backup.txt au chaud pour la suite.

Modifier les chemins d’images

Ensuite, il faut s’occuper des chemins pour les images présentes dans les billets, puisque la structure change. Pour ce faire, deux solutions s’offrent à nous : modifier le fichier blog-backup.txt avec un éditeur de texte qui enregistre en UTF-8 et abuser du chercher-remplacer, ou alors utiliser le fichier blog-backup-change.php qui permet d’opérer des modifications lors de l’importation finale.

Je choisi cette option. Le fichier en question est assez simple, puisqu’il faudra indiquer les anciens chemins et les nouveaux :

<?php
# replacement strings for posts
$post_old_strings = array(
'http://site_dc.free.fr/share/video', 'http://site_dc.free.fr/share/audio');
$post_new_strings = array(
'http://www.site_wp.net/public/video', 'http://www.site_wp.net/public/audio' );
# end of replacement strings for posts
?>

Lancer la procédure d’importation

La partie plaisante commence vraiment avec la dernière phase : la procédure d’importation du fichier blog-backup.txt dans la base de donnée wordpress qui n’attend que ça :

Télécharger le fichier blog-backup.txt dans le répertoire /wp-content/uploads.

Dans le panneau d’administration Gérer de WordPress :

  • cliquer sur Importer,
  • cliquer sur Dotclear flat import,
  • cliquer sur le bouton Importer.

Normalement tout devrait bien se passer. Toutefois, si votre fichier est très gros, il sera nécessaire de réinitialiser la procédure d’importation qui est prévue pour pouvoir s’effectuer en plusieurs fois. Pas de panique, la documentation vous prendra par la main :)

Je clique maintenant sur Importer et… après quelques secondes le message End of import apparait, puis je clique sur Terminé !

Tout fonctionne. La procédure a même récupéré les tags du plugin twTags !

Un peu d’url rewriting…

Je me rends ensuite dans Options > Permaliens pour modifier la structure des url afin qu’elles soient identiques au format qui existait dans Dotclear, soit :

/index.php/%year%/%monthnum%/%day%/%post_id%-%postname%

Mais celà ne suffit pas car la procédure d’importation modifie les numéros qui identifient les billets, c’est bête, hein ? Pas de souci, car emich a trouvé une solution efficace : une pincée de RewriteRule dans un fichier .htaccess (chez phpnet.org, ça s’appelle htaccess.fi) à placer à la racine du blog.

(…ou pas)

Arghh! Apparemment mon hébergeur ne semble pas apprécier ce genre de fantaisie : le serveur me renvoie une erreur interne (allez, pour la peine je fais appel au support technique de phpnet.org).

Qu’à celà ne tienne, je ne vais pas me décourager pour si peu. Enfin, quand je dis si peu, c’est vite dit, car tous les liens qui pointent vers des pages de mon blog mènent désormais vers une page 404…

Encore heureux que WordPress offre la possibilité de faire une page 404 personnalisée grâce à la hiérarchie des templates : un coup de 404.php et hop, c’est partie !

Quoique, arriver sur une page 404 aussi belle soit-elle lorsqu’on s’attend à lire un tutoriel sur jQuery ou sur le détourage des cheveux avec Photoshop doit être assez décevant…

Redirection 302

Il me reste une solution : mon nom de domaine redirige les visiteurs vers le répertoire /blog grâce à la formule magique suivante :

<?php
header("Status: 302 : object temporarily moved", false, 302);
header("Location: http://www.css4design.com/");
exit();
?>

La redirection 302 indique aux moteurs de recherche que le lien est dirigé temporairement à l’adresse spécifiée plus loin. De sorte que si je modifie la deuxième ligne par :

header("Location: http://www.css4design.com/blog-reloaded/");

Les visiteurs voulant afficher la page d’accueil du site seront redirigés vers la nouvelle version du blog. Cette solution est loin d’être la panacée :

  • www.css4design.com/ bénéficie d’un PageRank de 6 alors que www.css4design.com/blog-reloaded/ est à zéro…
  • en attendant que mon fichier htaccess fonctionne correctement, il y aura du contenu dupliqué (duplicate content) à revendre. Mieux vaut ça, que pas de contenu du tout,
  • la moitié des backlinks pointant vers mon blog est du type www.css4design.com/

Conclusion express

Faire une nouvelle installation à côté de l’ancienne pour faire la transition en douceur, c’est bien. Ce qui l’est moins, c’est de s’apercevoir que dans la précipitation, j’avais aussi modifié les redirections des flux RSS chez Feedburner avant de m’apercevoir que la réécriture d’url ne fonctionnait pas pour l’instant : ceux qui sont abonnés à mon flux RSS ont pu lire le brouillon de ce billet, ce qui n’était pas voulu ^_^v

Bref, du coup, au lieu d’attendre que tout soit prêt, je vais continuer cette migration en direct live !

Pour ceux que ça intéresse, j’ai installé le thème Kubrick revisité par Sandbox 1.0 (dont voici la documentation en ligne). Que du reloaded, en fait 😉

Je vous tiens au courant de la suite des événements 😉