Comment faire un fichier de redirection URL dans le cadre d’une migration de site e-commerce
Après 9 ans de travail acharné, l’éléphant va enfin accoucher d’une souris.
ENFIN, demain, sera mis en ligne la nouvelle version de Jardiforet.
Je vous passe les raisons qui ont fait trainer cette migration pendant 9 longues années.
Allons droit au but.
Je vais vous donner deux/trois trucs dans les jours à venir qu’on a utilisé pour effectuer cette migration de manière aussi fluide que possible.
Aujourd’hui je vais vous dévoiler comment on a créé notre fichier de redirection d’URL de plusieurs milliers de pages en quelques heures de travail à peine.
(Et quand je dis quelques, je parle de deux heures tout au plus, car on avait une galette des rois à manger)
Pré-requis :
Vous avez exporté tous vos produits de votre ancien CMS et tout réimporté dans votre nouveau CMS.
- Scrapez votre ancien et votre nouveau site avec Xenu ;
- Exportez en CSV. Ne gardez que les colonnes URL et Title des pages type text/html ;
- Transformez vos CSV en Array ;
- Passez le tout dans le script PHP à copier ci-dessous ;
- C’est terminé. Merci au revoir.
Xenu Sleuth, c’est un vieux logiciel qui permet de détecter les liens cassés sur un site internet.
Il est pas mal dans l’utilisation qu’on en fait ici, car il va visiter chaque page de votre site.
Il peut même se loguer à un htpasswd pour pouvoir visiter de fond en comble un serveur de preprod.
Attention cependant, même si vous n’avez rien à faire, cette partie peut prendre plusieurs heures suivant l’architecture de votre site.
Donc ne vous y prenez pas 5mn avant.
Une fois les deux sites entièrement scrapés, vous pouvez exporter les résultats en CSV.
Ainsi il est simple de ne garder que les lignes des éléments ayant pour type text/html (afin de supprimer toutes les images, CSS, & Co) et de faire valser toutes les colonnes qui ne servent à rien.
Dans les faits, il suffit de garder la colonne URL et la colonne TITLE.
Charge à vous de retravailler un peu la colonne TITLE si vous avez changé de configuration Title entre vos deux sites.
Une fois les deux fichiers éclaircis, on va les transformer en ARRAY (tableau informatique) à l’aide du concatenate de votre tableur, sous le format :
Clés = Title, Valeur = URL. Soit ‘Title’ => ‘Url’,
Petit truc PHP au passage.
Pour un fichier qui potentiellement peut être énorme, privilégiez les simples quote aux doubles.
En effet, ce qui est entre simple quote n’est pas interprété par PHP, alors que PHP tente d’interpréter ce qui est entre double quote.
Avec un gros fichier cela demander bien plus de ressource à votre serveur. Pour rien.
Donc à la fin, on se retrouve avec deux fichiers (ancien.php et nouveau.php) qui contiennent un truc du genre :
<?php $ancien = [ 'Page 1' => 'https://www.example.com/ma-page-1.html', 'Page 2' => 'https://www.example.com/ma-page-2.html', … 'Page 8755' => 'https://www.example.com/ma-page-8755.html' ]; ?>
et
<?php $nouveau = [ 'Page 1' => 'https://www.example.com/page-1/', 'Page 2' => 'https://www.example.com/page-2/', … 'Page 8755' => 'https://www.example.com/page-8755/' ]; ?>
Pour coller facilement mes données dans un tableur, je vais séparer mes données par des TAB.
Ainsi chaque élément sera dans sa colonne.
Notre module d’import nous demande 5 colonnes. Donc c’est parti pour créer une ligne par URL sous le format :
Titre [tab] Type de redirection [tab] Boolean sans importance [tab] Ancienne URL [tab] Nouvelle URL.
J’ai donc créé un petit script qui va comparer les deux fichiers précédents et nous sortir le tout sous le bon format prêt pour un copier-coller :
<?php include('ancien.php'); // On appelle les deux fichiers avec leurs Array respectifs include('nouveau.php'); $i=0; // On définit un petit compteur à 0. C'est important pour la suite foreach($ancien as $ancienurl){ // On fait une boucle pour chaque ancienne URL $titre = array_keys($ancien)[$i]; // On récupère la valeur de la clé (qui est le Title) pour pouvoir la rechercher dans les nouvelles URL echo $titre."\t301\t1\t".$ancienurl."\t".$nouveau[$titre]."\n"; // Titre [tab] 301 [tab] 1 [tab] Ancienne URL [tab] Nouvelle URL trouvée dans l'Array des nouvelles URL à l'aide de la clé commune. \t correspond à un caractere TAB et\n en fin de ligne à un retour à la ligne. $i++; // On incrémente le compteur } ?>
Vous avez juste à faire copier-coller dans votre tableur préféré.
Ce qui est intéressant, c’est quand le système ne trouve pas de correspondance, la colonne des nouvelles URLs est vide.
Vous pouvez exporter ces lignes pour les travailler plus tard à la main.
Ou pas. C’est beau une 404. Ne trouvez-vous pas ?
Voilà, je vous ai fait gagner plusieurs heures de travail.
Vous pouvez m’aduler.