Aujourd'hui est pour moi un grand jour dans les petits jours de mon existence. Pour faire une histoire courte avec mes histoires de "Geek" plates, j'irai droit au but afin d'expliquer mon expérience avec les fichiers de configuration .htaccess sur serveur Linux. Ce billet me servira aussi d'aide-mémoire.

Quand j'ai commencé à bloguer dans mon site, j'écrivais tous mes billets avec une adresse WEB (URL) ayant ce type de format :

En langage informatique, on nomme ce format Query_String. http://www.francoisrodrigue.com/blogstory/?2006/07/29/128-restaurant-de-la-place-st-paul-attrape-touriste

Après mûre réflexion, j'ai fait le choix de changer ce format pour celui de Path_Info qui ressemble à ceci : http://www.francoisrodrigue.com/blogstory/2006/07/29/128-restaurant-de-la-place-st-paul-attrape-touriste

Les deux adresses ne sont pas semblables. Remarquez bien, il manque le point d'interrogation dans la deuxième URL. En théorie et des fois en pratique, le format Path_Info est plus facilement indexable par les différents moteurs de recherche d'où la raison de ce changement.

Il était obligatoire pour moi de rediriger les requêtes sur les billets déjà indexés dans Google vers la nouvelle adresse sinon j'allais perdre une bonne quantité de visiteurs qui ne trouveraient pas le billet recherché.

Grâce à différents sites documentant la réécriture d'URL sur serveur WEB Linux, j'ai organisé la règle de réécriture suivante dans un fichier .htaccess. Cela me permet de façon transparente de rediriger tous mes visiteurs à chaque fois au bon endroit en récrivant pour eux le lien obsolète.

Voici la règle en question (1er et 2e paragraphe) :

__Options +FollowSymLinks
RewriteEngine On
RewriteBase /blogstory/
#
# Externally redirect old URLs
RewriteCond %{QUERY_STRING} ^(0-9{4})/(0-9{2})/(0-9{2})/(0-9{2,3})-(a-zA-Z0-9-+)$
RewriteRule ^index.php http://www.francoisrodrigue.com/blogstory/%1/%2/%3/%4-%5? R=301,L
#
# Discourage hotlinking
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?francoisrodrigue.com/blogstory NC
RewriteRule \.(png¦gif¦jpg¦bmp¦wav¦mp3¦wmv¦avi¦mpeg)$ - NC,F
#
# Internally rewrite all URLs which do not resolve to existing files or directories to /blogstory/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$  index.php/

__

Bon assez de "geekerie" pour ce soir, dodo!