II. Travail préliminaire▲
II-A. Problématique▲
Générale▲
Étudions une situation pour illustrer tout cela. Je vais utiliser des dates fictives pour simuler l'écoulement du temps.
- viewtopic.php?t=[0-9]+
- viewforum.php?f=[0-9]+
- etc.
- ftopic[0-9]+.html
- forum[0-9]+.html
- etc.
- sujet-[0-9]+,[0-9a-z-]+.html
- forum-[0-9]+,[0-9a-z-]+.html
- etc.
Ici, les [0-9]+ représentent les paramètres nécessaires au bon fonctionnement de phpBB.
Les [0-9a-z-]+ représentent les listes de mots clefs, qui sont des informations utiles uniquement pour le référencement (non pour le bon fonctionnement de phpBB). Ce sont en partie elles qui nous posent problème, malgré la raison évidente de leur présence.
La dernière situation illustre la méthode proposée dans le tutoriel précédent.
Le problème est que, tout au cours de la vie du forum, les utilisateurs ont posté des liens (dans le forum lui-même ou à l'extérieur). Cela a pu se produire entre chaque étape, nous avons donc certainement des liens écrits de trois manières différentes mais qui fonctionnent tous de manière équivalente. Ces liens ne sont pas gérés automatiquement par phpBB car ils sont traités comme de l'information plutôt que comme des liens. À ce titre, les adresses contenues dans les messages n'évoluent pas lorsque nous modifions la technique de réécriture de liens.
En conséquence, de tels liens redirigent vers le même contenu que des liens équivalents qui ont été réécrits. Cela nous met en situation de duplicate content et, tel que nous l'avons établi dans le tutoriel précédent, c'est très mauvais pour notre référencement. Il faut donc y remédier.
Il y a deux cas : les liens provenant de l'extérieur de notre site et ceux internes à notre site.
Liens externes▲
Ce sont des backlinks : il est évident que nous n'allons pas pouvoir tous les modifier. Peut-être sommes nous l'auteur de quelques-uns mais rien ne garantit que nous n'en oubliions aucun. De plus, il est fort probable que d'autres personnes aient copié ailleurs des liens de notre site, voire même que les moteurs de recherche se souviennent de ces anciennes adresses.
Les raisons sont nombreuses, le jugement est sans appel : il faut avertir les visiteurs utilisant des adresses obsolètes qu'ils doivent désormais utiliser les nouvelles.
Liens internes▲
Nous avons un certain contrôle sur le contenu de notre site. En réalité, nous pouvons masquer le fait qu'il y ait eu diverses méthodes de réécriture de liens.
En somme, il s'agit d'insérer une étape de réécriture de liens avant la réécriture finale des liens. La différence est que, cette fois, les liens réécrits ne parviendront pas jusqu'au navigateur. Au contraire, ils seront immédiatement à nouveau réécrits.
Pour cela, nous aurons simplement besoin d'une liste d'adresses à réécrire. Dans la réécriture complète de liens (l'autre tutoriel), nous avons besoin de déterminer des mots clefs et tout un tas de choses. Ici, l'objectif est justement de retrouver les adresses d'origine (donc de supprimer les informations ajoutées par une méthode antérieure d'URL Rewriting). Il ne sera pas nécessaire d'envoyer des requêtes à une base de données.
II-B. Tour du propriétaire : que devons-nous changer ?▲
Nous allons commencer par identifier les URLs que nous devrons restaurer (les adresses de destination, en quelque sorte). Théoriquement, cela devrait beaucoup ressembler à ce que nous avons fait dans l'autre tutoriel (quoique dans le sens l'inverse). Je vais directement proposer une syntaxe prévue pour être utilisée dans la fonction preg_replace() (remplacement de chaînes au moyen d'une expression régulière). Cela nous simplifiera la tâche puisque cette syntaxe est déjà utilisée dans le fichier .htaccess.
Je vais continuer à prendre pour exemple un forum phpBB.
- viewtopic.php?t=$1
- viewforum.php?f=$1
- etc.
Maintenant que nous savons où nous devons aller, il est temps de recenser les URLs à restaurer. Il s'agit de toutes les URLs qui ne sont pas au format standard de phpBB : nom du script + paramètres.
- ftopic[0-9]+ pour les sujets
- forum[0-9]+ pour les forums
- etc.