12
Avr
09

Migration des permaliens





J’ai entrepris hier la migration des permaliens du blog. Sous WordPress, c’est un jeu d’enfant ou presque puisqu’il suffit de modifier la structure dans le panneau de configuration. Je suis passé de la nomenclature /%category%/%postname%/ à /%postname%/ afin de réduire la longueur de l’url et donc de la rendre plus pertinente.

Seul problème rencontré, il existe depuis quelques versions de WordPress ce que l’on appelle la page « attachment » qui est un post vide contenant juste l’attachement en question (photo, vidéo, etc…). Si vous avez dans vos posts, une image avec le même nom que le post, la redirection n’aura pas lieu correctement après la migration 🙁

Voici un exemple concret : j’ai un post « toto » dans la catégorie titi avec une photo intitulée « toto.jpg ». Vous pouvez accéder à la photo via /titi/toto/toto/ avant la migration. Après la migration, vous pourrez toujours accéder à la photo via titi/toto/ et donc l’utilisateur suivant l’ancienne URL ne sera pas redirigé vers /toto/ qui est la nouvelle URL.

Il existe un certain nombre de plugins fonctionnant plus ou moins bien pour gérer automatiquement les redirections 301 de l’ancienne structure vers la nouvelle :

  • Dean permalink migration : gère correctement le cas décrit ci-dessus mais casse les liens de feed et de trackback;
  • Permalink redirect : permet de gérer plusieurs structures antérieures apparemment mais ne gère pas le cas décrit ci-dessus.

Comme aucune solution automatique ne fonctionnait à 100%, je me suis tourné vers l’indispensable plugin redirection et j’ai créé manuellement les redirections. Cela peut sembler fastidieux mais en réalité, cela ne prend que 10 minutes. Il suffit de créer un fichier .csv avec cette tête :

/categorie1/(.*)/,/$1/,301

/categorie2/(.*)/,/$1/,301

Ensuite vous l’importez via le panneau d’admin du plugin et ça roule! Ainsi, la redirection est forcée et on n’arrive plus sur la page de l’attachement. Bon au final, j’ai quand même passé la journée là dessus à cause de cette histoire d’attachement. En effet, il m’a fallu des heures avant de trouver le dénominateur commun à tous ces posts qui n’étaient pas redirigés correctement. Mais bon voilà maintenant, ça marche! Si vous voyez des problèmes, n’hésitez pas à me les signaler.

Edit du 12/04/2009 :

Il faut aussi deux redirections « do nothing » avant celles des catégories comme suit :

/category/(.*)/

/tag/(.*)/

Si vous n’insérez pas ces redirections « do nothing », vous risquez d’avoir des matches avec vos redirections de notes et des redirections non souhaitées (notamment pour les subpages de catégories et de tags).







L'autre monde | Thème liquide par Olivier