Il y a quelques mois, je vous ai montré comment changer la structure des permaliens WordPress. Cela fonctionne très bien et tout le trafic des anciennes URL est bien redirigé vers les nouvelles.
Il est toutefois encore possible de faire mieux que cela : éditer toutes les URL de la base de données pour afficher les bons liens directement et éviter les redirections Apache à chaque fois qu’un visiteur clique sur un lien de vos anciens articles.
Cela évite une redirection donc permet d’afficher la bonne page directement, sans le temps de latence dû à l’exécution de mod_rewrite
.
Etape 1 : sauvegarder votre base de données
On n’insistera jamais assez sur l’importance de sauvegarder les données avant d’effectuer une quelconque manipulation des données.
Commancez donc par faire une sauvegarde de votre base WordPress, vu que nous allons l’éditer en direct.
Etape 2 : installer le plugin Search Regex
Vous avez ensuite besoin du plugin Search Regex.
Il fait partie des must-have pour faire une manipulation rapide sur l’ensemble du contenu du blog au niveau de la base de données.
Installez-le, activez-le et rendez-vous sur la page d’administration du plugin.
Etape 3 : remplacez les anciennes URI par les nouvelles
Avez-vous bien sauvegardé votre base de données dans l’étape 1. Si oui, continuons.
L’intêret de Search Regex est qu’il permet d’utiliser les expressions régulières (RegEx est l’abbréviation de Regular Expressions en anglais).
Nos anciens liens sont de la forme https://www.skyminds.net/2012/06/02/post-name/
(/année/mois/jour/post-name/).
Nous allons donc rechercher tout ce qui commence par un guillemet suivi de notre nom de domaine, 4 chiffres pour l’année, 2 chiffres pour le mois, 2 chiffres pour le jour, un wildcard pour le post-name, un slash de fin et un guillemet.
Nous utilisons le signe $ pour délimiter l’expression régulière. Voici donc notre search pattern :
$("https://www.skyminds.net)/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)/"$
Code language: JavaScript (javascript)
Pour le replace pattern, nous remettons les guillemets et gardons juste le nom de domaine suivi du 5ème élément, le post-name :
"https://www.skyminds.net/$5/"
Code language: JSON / JSON with Comments (json)
Cocher la case Regex.
$("https://www.skyminds.net)/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)/"$
Code language: JavaScript (javascript)
Si vous cliquez le bouton Search, vous ne verrez que les résultats de la recherche.
Si vous cliquez sur Replace, vous avez à la fois les résultats de la recherche et ce que donnera le remplacement. Cliquez donc sur Replace (cela n’effectue aucun enregistrement sur la base de données).
Une fois que vous avez tout vérifié et êtes prêts à effectuer les changements, cliquez sur le bouton Replace and Save.
Voici le tout en image :
Voici les résultats de la recherche :
Etape 4 : vérification des changements et sauvegarde des nouveaux liens
L’ancienne URL va bien être remplacée par la nouvelle. Vous pouvez donc cliquer sur Replace and Save pour enregistrer les nouveaux permaliens dans la base de données.
L’opération est à répéter plusieurs fois pour prendre en compte tous les liens. Pensez également à chercher dans les différentes option de la liste Source : comment content et post content sont là où sont stockés le contenu des articles et des commentaires donc c’est là que les liens se trouveront.
Bonne migration.
Rencontrez-vous des défis avec votre site WordPress ou WooCommerce? Laissez-moi les résoudre pour vous.