Mod-rewrite


Le mod-rewrite est un module ou un plug-in pour les serveurs Apache. Il vous permet de réécrire ou de rediriger les URLs vers un site web. Pour cela, un nombre infini de règles peut être défini au sein du module qui contrôle la réécriture de l’URL dynamique. Ce module est aussi appelé moteur de réécriture.

Possibilités avec le mod-rewrite

Avec le module mod-rewrite, de nombreuses tâches du serveur ou prérequis pour des tâches liées à la redirection peuvent être mises en place. Les règles sont intégrées dans le fichier .htaccess. Le “Umlaut handling”, ou traitement des trémas, est par exemple juste une des capacités du mod-rewrite.

Voici une présentation rapides des options les plus courantes :

Générer des URLs SEF

Les URLs dynamiques peuvent être réécrites à l’aide du moteur de réécriture, de manière à répondre aux engagements SEO et à faciliter l’utilisation de l’interface.

Exemple :

URL dynamique :

www.sample.com/kat.php?typ=wiki&typ2=seo

URL SEF après le mod-rewrite :

www.sample.com/wiki/seo

Créer des redirections vers d’autres URLs

Dans le cadre des redirections 301, il est garanti que seulement une version du site web est communiquée dans l’index des moteurs de recherche.

Exemple :

http://sample.com

est redirigé de manière permanente vers

http://www.sample.com

Exclusion des spams

On peut empêcher l’accès de certains sites web en bloquant les adresses IP prédéfinies.

Règles fréquentes

  • La commande suivante active le module :
RewriteEngine on
  • Un fichier .php peut être transformé en .html :
RewriteEngine on  RewriteRule ^(.*).html$1.php => Réécrivez toutes les URLs avec une extension php dans les URLs possédant une extension html.
  • Description des symboles :
^    indique le début d’une URL. 
(.*)    est un paramètre pour toute chaîne de caractère au sein d’une URL. 
$      à la fin : signifie la fin d’une URL. 
$     au début : signifie une nouvelle chaîne.
  • Une URL dynamique peut être convertie en une URL statique :
RewriteEngine on  RewriteRule ^page_ ([0-9] +).html$ page.php?id=$1  
=> Si un utilisateur recherche la page_5.html, cette URL sera internement convertie en page.php?id=5?.

Le résultat de cette réécriture sera :

www.domain.com/page_5.html

et sera réécrite en :

www.domain.com/php?id=5

Plus d’informations sur la syntaxe pour le mod-rewrite peuvent aussi être trouvées ici : modules Apache mod-rewrite

Importance pour le référencement

En règle générale, des URLs dynamiques peuvent être réécrites en tant que URLs dites “parlantes” en utilisant le mod-rewrite. Au sein de la scène SEO, il est souvent discuté si la manipulation d’une URL peut provoquer de meilleurs classements. Les défenseurs de cette théorie croient que l’URL elle-même est un facteur de classement. Cependant, des preuves claires qui pourraient entériner cette thèse dans la pratique manquent. On peut néanmoins considérer qu’il existe un effet indirect sur l’optimisation du référencement, car les utilisateurs peuvent deviner avant de cliquer quel type de contenu peut être trouvé sous cette URL SEF. Des URLs ergonomiques et faciles à lire servent à la fois à construire une sorte de confiance et à stimuler le clic. Si un internaute a le choix entre une URL dynamique (qui sont souvent vues comme quelque chose de crypté pour les novices) et une adresse web optimisée, ils auront probablement tendance à choisir cette dernière.

Les requêtes peuvent être aussi redirigées avec le module rewrite. Les professionnels du SEO utilisent souvent cette méthode pour rediriger de façon permanente les domaines de mot-clé vers le site principal. Ce dernier est en effet supposé être consolidé par des mots-clés supplémentaires et spécifiques. Les redirections ne sont pas souvent considérées comme importantes par les moteurs de recherche. Dans des cas extrêmes, cette pratique peut même être mal interprétée et vue comme une manipulation des résultats de recherche. Si aucune autre raison n’existe, comme par exemple l’utilisation de mots courts au sein d’une adresse web accrocheuses à des fins publicitaires, les redirections devraient seulement être utilisées pour éviter le duplicate content.