mardi, janvier 25, 2011

Méthode générale pour rewriter toutes les urls d'un site

1. identifier les différentes variables et valeurs pouvant être présentes dans les urls :

http://www.example.com?var=7&stri=kword


2. Réécrire ces urls de sorte qu'un être humain puisse les comprendre et qu'elles contiennent des mots-clés pour les moteurs, en veillant à n'utiliser que des caractères alphanumériques et des caractères de séparations valides comme le tiret -.

http://www.example.com/key-word-7.html

3. Faire correspondre les anciennes urls avec les nouvelles urls en utilisant le fichier .htaccess à la racine de votre site internet en ajoutant une ligne comme celle-ci :

RewriteEngineOn
RewriteRule ([a-z]*-?[a-z]*?)?-([0-9]+)\.html$ /index.php?var=$2&stri=$1 [L]

4. Trouver la fonction de votre script qui génère les urls du point 1 et la modifier ou l'overrider pour qu'elle génère le nouveau format. Si des urls sont stockées en dur dans des fichiers ou dans une base de donnée, exportez tous les fichiers modifier les urls avec un script (TextPad pourra vous être utile avec ses Posix) et réimporter les fichiers.

5.Vous pensez que c'est fini ? Pas du tout. Vous devez maintenant rediriger toutes les anciennes urls ou en tout cas toutes les anciennes urls ayant des liens externes (en regardant sur webmastertools et dans vos fichiers logs) vers votre nouveau format d'url en 301 si vous avez déjà écrit la fonction qui traduit l'ancien format vers le nouveau en PHP par exemple vous pouvez vous en servir en effectuant directement ces redirections dans vos fichiers PHP. Ce pseudo code est à placer au tout début du fichier PHP avant que quoi que ce soit d'autre ne soit envoyé.



<?php
//makenewurl devrait générer le nouveau format d'url à partir de l'ancien et ajouter le domaine racine
if(isoldurl()){
$newurl= makenewurl($_SERVER["request_uri"])
header('HTTP/1.1 301 Moved Permanently', false, 301);
header('Location: $newurl');
exit();
}
?>

Je n'ai pas testé ces bouts de codes, mais je voulais avoir vos avis sur le principe, bien sûre la majorité des scripts open source ou non incluent déjà l'url rewriting ou permettent au pire d' installer facilement un module qui gère cela, mais dans certains cas il faut mettre les mains dans le cambouis...