Pendant ma migration de dotclear 1.2.6 vers 2 beta 7, je me suis assez pris la tête pendant 2 jours avec ce fameux fichier qu’est le .htaccess et les redirections d’URL.
J’ai parcouru à peu près tous les sites, blogs, forums qui existent à ce sujet et je vais donc apporter mon explication pour aider mon prochain!!!
Mais tout d’abord, qu’est ce que c’est que ça ?
La redirection d’URL permet tout simplement de rediriger des anciennes URL vers des nouvelles. On le comprend plus facilement dans le cadre du référencement.
Lorsque vos pages sont référencées sur les moteurs de recherche, elles sont enregistrées grâce à leur URL. Si vous modifiez l’architecture de votre site Internet, l’URL des pages change…vos visiteurs ne viendront plus directement sur votre site et tout le travail de référencement sera à refaire.
Pour éviter cela, on peut utiliser le fichier .htaccess (souvent utilisé pour protéger son site par mot de passe) et quelques lignes de code pour rediriger le trafic vers les pages de votre nouveau site…Pratique !!!
Je vais copier/coller mon fichier .htaccess ci-dessous et tenter une explication du pourquoi/comment/à quoi ça sert pour chaque ligne:
Activer le php5
# Pour activer PHP 5
SetEnv PHP_VER 5
Lors de ma migration, j’ai vu que Dotclear beta 7 utilise le Php5…Maintenant très largement répandu. Il se trouve que mon hébergeur, le très célèbre OVH, a mis du temps à se mettre à jour et utiliser le php5 pour les bases de données. Il se trouve que j’ai recréé un table, avec la possibilité d’utiliser php5, cependant, cette ligne de commande est indispensable…je n’ai pas trop compris pourquoi, si quelqu’un le sait, une petite explication serait la bienvenue.
Autre info, j’ai vu que certains utilisent la commande « AddType x-mapp-php5 .php« , perso, elle ne fonctionne pas.
Activer la réécriture des URL
#Activation de la réécriture des Urls
RewriteEngine On
Cette commande sert, comme son nom l’indique à activer la fonction de réécriture des liens.
Indication du répertoire racine pour la réécriture
#Indication du répertoire racine pour la réécriture
RewriteBase /blog/
Cette commande indique le répertoire ou tout va se passer. Si vous ne changez pas le nom, c’est souvent « dotclear ».
Pas de réécriture si le fichier (-f, file) ou le dossier (-d, directory) existe
#Pas de réécriture si le fichier (-f, file) ou le dossier (-d, directory) existe
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
Le commentaire est aussi assez explicite.
Redirection des flux RSS
# feed RSS et Atom Dc1 vers feedburner
Redirect permanent /blog/rss.php http://feeds.feedburner.com/WilliamTootill
Redirect permanent /blog/atom.php http://feeds.feedburner.com/WilliamTootill
Là, il s’agit d’une redirection d’une adresse vers une autre (sans variable) avec la commande « Redirect permanent« .
A gauche, l’ancien lien « /blog/rss.php « , et à droite, la nouvelle adresse complète « http://feeds.feedburner.com/WilliamTootill ». Dans mon cas, elle est redirigée vers Feedburner.
Redirection des Tags
#Tags
RewriteRule ^index.php/tag[/](.+)$ #http://www.william-tootill.info/blog/index.php?tag/$1 [R=301,L]
Les Tags sont les mots-clés que tout bon blog se doit d’avoir. il est donc important de rediriger les adresses.
Ici, mon ancienne adresse pour le tag bourse était: « william-tootill.info/blog/index.php/tag/bourse »
Il faut que je le redirige vers: « http://www.william-tootill.info/blog/index.php?tag/bourse » et ainsi de suite pour tous mes tags.
Je dois donc utiliser une variable.
La variable est « (.+)$ » qui permet de récupérer tout caractère. Dans la nouvelle adresse, le « $1 » permet d’indique de placer cette variable (de la 1ère adresse), à cet emplacement.
Dans le cas des Tags, une seule variable est nécessaire.
Le « [R=301,L] » indique au moteur de recherche que cette nouvelle adresse est définitive.
Redirection des billets
#Billets
RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)[/]([0-9]+)[/](.+)$ #http://www.william-tootill.info/blog/index.php?post/$1/$2/$3/$4 [R=301,L]
Maintenant, vient la redirection des billets. Sur le même principe, je dois remplacer:
« william-tootill.info/blog/index.php/2007/03/02/61-challenge-investissement-supelec »
Par
« http://www.william-tootill.info/blog/index.php?post/2007/03/02/61-challenge-investissement-supelec »
Cette redirection nécessite 4 variables: l’année, le mois, le jour et le nom de l’article. Pour les chiffres, la variable est « ([0-9]+) » qui permet de récupérer des chiffres. Pour le nom de l’article, c’est comme pour les Tags: « (.+)$ ».
A ne pas oublier, les slashs qui doivent être entre crochets « [/] ».
On remarque dans la nouvelle adresse que 4 variables sont présentent.
Redirection des archives et des catégories
#Archives
RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)$ #http://www.william-tootill.info/blog/index.php?archive/$1/$2 [R=301,L]
#Categories
RewriteRule ^index.php/(.+)$ #http://www.william-tootill.info/blog/index.php?category/$1 [R=301,L]
Dans le même esprit, la redirection des archives et des catégories se fait pareil.
ATTENTION: il faut faire attention à l’ordre. Lorsque la redirection est faite, le fichier .htaccess est parcouru de haut en bas (logique) et applique la redirection dès que le format correspond.
En gros, lorsque j’ai mis la redirection pour les Tags à la fin, elle ne marchait pas. Il me mettait le format des Catégories.
En plaçant la redirection des Tags en premier, tout est OK !
Voilà voilà. Je recopie dessous tout mon fichier htaccess:
# Pour activer PHP 5
SetEnv PHP_VER 5
#Activation de la réécriture des Urls
RewriteEngine On
#Indication du répertoire racine pour la réécriture
RewriteBase /blog/
#Pas de réécriture si le fichier (-f, file) ou le dossier (-d, directory) existe
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
# feed RSS et Atom Dc1 vers feedburner
Redirect permanent /blog/rss.php http://feeds.feedburner.com/WilliamTootill
Redirect permanent /blog/atom.php http://feeds.feedburner.com/WilliamTootill
#Redirection des flux de DC2 vers feedburner tout en conservant les flux des catégories, des tags et des billets sur DC2
RewriteRule ^/feed/rss2$ http://feeds.feedburner.com/WilliamTootill [R=301,L]
RewriteRule ^/feed/atom$ http://feeds.feedburner.com/WilliamTootill [R=301,L]
#Tags
RewriteRule ^index.php/tag[/](.+)$ #http://www.william-tootill.info/blog/index.php?tag/$1 [R=301,L]
#Billets
RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)[/]([0-9]+)[/](.+)$ #http://www.william-tootill.info/blog/index.php?post/$1/$2/$3/$4 [R=301,L]
#Archives
RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)$ #http://www.william-tootill.info/blog/index.php?archive/$1/$2 [R=301,L]
#Categories
RewriteRule ^index.php/(.+)$ #http://www.william-tootill.info/blog/index.php?category/$1 [R=301,L]
Et enfin, quelques liens qui m’ont bien aidé:
Le blog de LLaumgui
Webmaster-hub
Apache modules
Alexandre.alpetit
Ecrit par William le 25 juillet, 2007 | Pas de commentaires »