Voir aussi
Études
Articles de WRI
- Redirections 302
- Google Toolbar 3
- Rel="NoFollow"...
- L'effet sandbox
- Foire aux backlinks
- Redirections sauvages
- Détournement de page
- Afficher un flux RSS
- Intégrer un flux RSS
- Le PR est-il mort ?
- Analyse référencement
- Google Data Centers
- L'algo de janvier 2004
- Google Deskbar
- Google Dance oct 2003
- GoogleBot change
- Calculatrice Google
- J'ai de la chance
- Google.fr, Google.com
- GoogleBot détaillé
- Bilan 2002
- Chanson au PR Noel
- Viewer, WebQuotes
- La vie d'une page
- Les labos de Google
- Google API
- Phénomène de société
- L'algorithme parfait
- La Google danse...
Autres articles
- Pénalités de Google
- Ma théorie sandbox
- Le secret des doubles-résultats
- Marketing viral
- Le projet Opquast
- Forum phpBB
- Sessions et langues
- Référencement multilingue
- Google en résumé
- Réécriture d'URL
- URL Rewriting
- URL Rewriting : intro
- Fichier .htaccess
PHP
Mise en place de l'URL Rewriting
Par Olivier Duffez, le 2 mai 2006
Nouveau ! Découvrez le programme 2008 de formation au référencement, avec un module de formation à l'URL Rewriting. Formation préparée et assurée par Olivier Duffez, éditeur de WebRankInfo.
Article écrit par Olivier Duffez en collaboration avec Olivier Andrieu, paru initialement le 15/09/2004 dans la lettre Pro d'Abondance
Sommaire de cet article :
- URL Rewriting
- Principe de l'URL Rewriting
- Mise en place de l'URL Rewriting
- Optimisation des pages dynamiques
Si vous avez déjà un site dynamique en ligne, voici les étapes à suivre pour mettre en place la réécriture d'URL :
- Vérifier que votre hébergeur permet l'utilisation de l'URL Rewriting
- Identifier les pages dynamiques dont l'URL comporte des paramètres, et choisir un nouveau schéma d'URL « propre »
- Ecrire les règles de réécriture dans le fichier .htaccess adéquat.
- Changer tous les liens vers chaque fichier dont l'URL a changé.
- Mettre à jour votre site et vérifier que tout fonctionne.
Ouf... ;-) Voyons maintenant chacune de ces étapes les unes après les autres :
Vérifier si l'URL Rewriting est compatible avec votre hébergeur
La première chose à faire est bien évidemment de s'assurer que le serveur qui héberge votre site permet d'utiliser la réécriture d'URL. Tout dépend, dans un premier temps, du type de serveur utilisé. L'objet de cet article n'est pas de passer en revue tous les types de serveurs mais voici un résumé des possibilités de réécriture d'URL sur les serveurs web les plus courants :
| Serveur web | Support de la réécriture d'URL | Détails |
|---|---|---|
| Apache | Géré par le module mod_rewrite, un module standard d'Apache à partir de la version 1.3.27 |
Le module mod_rewrite doit être actif : le fichier de configuration d'Apache (httpd.conf) doit contenir cette ligne :
ainsi que celle-ci :
|
| IIS (Microsoft) | En ASP : réécriture possible par des filtres ISAPI, commercialisés par diverses sociétés (payants). | Le paramétrage des règles de réécriture est spécifique à chaque composant. |
| En ASPX (.NET), sur tous les serveurs supportés : des fonctions sont disponibles comme RewriteURL(), etc. qui prennent en charge la réécriture d'URL. |
Des codes prêts à compiler pour exploiter ces capacités sont fournis par Microsoft (exemple ) ou via des projets open source comme codeproject.comAucune méthode standard n'a été prévue pour définir les règles de réécriture mais une utilisation pratique consiste à les paramétrer directement dans le web.config (fichier de configuration de l'application ASP.Net, présent notamment à la racine du site), qui est standardisé en XML. |
Si votre site est hébergé sur un serveur dédié, vous avez accès vous-même à la configuration du serveur. Dans le cas d'un serveur Apache, vous pouvez donc modifier le fichier de configuration afin d'activer le support de la réécriture d'URL. Pensez à redémarrer Apache après avoir modifié le fichier de configuration.
Mais ce n'est pas tout. Si votre site est hébergé sur un serveur mutualisé, il n'est pas garanti que votre hébergeur ait activé le support de la réécriture d'URL, principalement pour des raisons de sécurité.
Si votre site est fourni par un hébergeur gratuit, il y a peu de chances que la réécriture d'URL soit possible. Nous vous conseillons fortement d'investir dans un hébergement payant (en plus d'un nom de domaine), les avantages sont réellement nombreux pour effectuer un bon référencement.
Si vous souhaitez choisir un bon hébergeur, faites-moi confiance et prenez Sivit, qui héberge WebRankInfo depuis des années. Est-il nécessaire de préciser que l'URL Rewriting est possible dans tous les cas de figure ?
Pour vérifier si le module mod_rewrite d'Apache est activé, il vous suffit de suivre les points suivants :
- Créez un répertoire nommé test que vous placerez à la racine de votre site (il sera donc accessible via l'adresse
http://www.votre-site.com/test/. - Dans ce répertoire, créez un fichier HTML nommé test.html (
http://www.votre-site.com/test/test.html) contenant uniquement les lignes suivantes :<html> <head> <title>Test</title> </head> <body> OK ! </body> </html>
- Dans ce répertoire, créez un
fichier nommé .htaccess contenant les lignes suivantes (nous verrons
plus loin leur signification) :
Options +FollowSymlinks RewriteEngine on RewriteRule ^inconnu\.html$ /test/test.html [L]
- Transférez ce répertoire et ces
deux fichiers sur votre site, puis rendez-vous à l'adresse
http://www.votre-site.com/test/inconnu.html
Vous vous attendez sans doute à ce que le navigateur affiche un message d'erreur indiquant que le fichier nommé inconnu.html n'existe pas à cet endroit sur votre site (erreur 404). Si c'est le cas, alors votre hébergeur n'autorise sans doute pas la réécriture d'URL : contactez-le pour lui demander.
Si vous êtes chez un hébergeur gratuit qui ne le gère pas, c'est une très bonne raison pour franchir le cap et bénéficier de tous les avantages d'un hébergement professionnel (qui est désormais financièrement accessible à tous).
Sinon, vous devriez voir le texte « OK ! », ce qui signifie qu'en demandant à voir le fichier inconnu.html (qui n'existe pas physiquement sur le serveur), le serveur vous affiche le contenu du fichier test.html (qui existe bien). C'est le principe même de la réécriture d'URL et donc la preuve que votre serveur gère bien la réécriture d'URL. Il a « réécrit », dans notre cas, « inconnu.html » en « test.html ». CQFD.
Il peut y avoir un troisième cas de figure (que nous ne vous souhaitons pas…) : votre site est totalement bloqué, aucune page ne peut être affichée, et vous avez un message indiquant « Erreur 500 ». Dans ce cas ne paniquez pas, il vous suffit de retirer le fichier .htaccess qui est incompatible avec votre hébergeur.
Définir les schémas d'URL
Reprenons notre exemple de site qui dispose d'une base de données d'articles, et dressons la liste des types d'URL. En voici quelques exemples :
article.php?id=12&rubrique=5article.php?id=12&page=2&rubrique=5
Pour simplifier la lecture, nous n'avons listé ici que des URLs concernant le même article, mais dans la pratique quand vous essayez de dresser la liste des types d'URL sur votre site, vous pouvez tomber, par exemple, sur :
article.php?id=182&rubrique=15article.php?id=36&page=5&rubrique=3
Le principe de l'URL rewriting consiste à trouver les schémas des URL à partir de leurs formes communes. Dans notre exemple, les articles sont accessibles selon deux types d'URL (id+rubrique ou id+rubrique+page), suivant que le numéro de page est précisé ou non.
A partir du moment où vous avez identifié ces « schémas d'URL », vous devez choisir un nouveau format d'URL (l'url « propre »). En général on fait apparaître un nom de fichier avec l'extension .html (ou .htm) mais sachez que vous pouvez mettre ce que vous voulez, cela n'a aucune incidence sur la prise en compte des pages par Google. En effet, quelle que soit l'extension que vous aurez choisie, la page restera une page respectant la norme HTML.
Le nom du fichier sera formé d'un préfixe et/ou d'un suffixe, et des valeurs des variables (que ce soient des chiffres ou des lettres). Profitez de cette étape pour bien réfléchir en fonction du référencement, car vous pouvez utiliser des mots-clés dans les URL de vos pages, qui soient plus parlants pour les internautes et sans doute pris en compte par les moteurs de recherche.
Voici les nouveaux formats d'URL que nous avons choisis pour chacune des URL des exemples précédents :
article-12-5.htmlarticle-12-2-5.htmlarticle-182-15.htmlarticle-36-5-3.html
Pour séparer les différentes parties de l'URL, vous devez choisir un séparateur (dans cet article, nous avons choisi d'utiliser uniquement des tirets). Il est plus efficace pour le référencement de choisir un caractère qui soit considéré comme un séparateur de mots par Google. Ainsi, vos URL pourront contenir des mots-clés, ce qui est pris en compte sans soucis par Google.
Vous pouvez néanmoins également utiliser les caractères suivants :
- Le tiret : -
- La virgule : ,
- Le point : .
- La barre oblique (slash) : /
- La barre verticale (pipe) : |
Nous vous déconseillons d'utiliser les caractères suivants :
- Le tiret bas (underscore) : _
- Le signe dièse : #
- L'esperluette : &
- L'arobase : @
- Le point d'interrogation : ?
- Le signe dollar : $
- Les caractères accentués, l'espace
Le tiret et la virgule sont les plus simples ; la barre oblique peut poser des problèmes de répertoires et la barre verticale n'est pas très connue des internautes. Le tiret bas (underscore) pose des soucis avec Google.
Nous avons donc défini deux formats d'URL pour notre rubrique d'affichage des articles. Essayons de les formaliser en supprimant les numéros d'articles, de rubriques ou de pages, et en les remplaçant par leur signification :
article-ARTICLE-RUBRIQUE.htmlarticle-ARTICLE-PAGE-RUBRIQUE.html
Bien entendu, ARTICLE, RUBRIQUE et PAGE représentent ici des numéros.
Rédiger les règles de réécriture
Maintenant que nous avons déterminé les différents schémas d'URL, il reste à écrire les règles de réécriture qui vont indiquer au serveur comment interpréter chacun de ces schémas.
Passons directement à la solution que nous allons commenter… Voici le contenu du fichier .htaccess situé dans notre répertoire http://www.notre-site.com/articles/ :
#-------------------------------------------------- # Répertoire : /articles/ #-------------------------------------------------- # Le serveur doit suivre les liens symboliques : Options +FollowSymlinks # Activation du module de réécriture d'URL : RewriteEngine on #-------------------------------------------------- # Règles de réécriture d'URL : #-------------------------------------------------- # Article sans numéro de page : RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ /articles/article.php?id=$1&rubrique=$2 [L] # Article avec numéro de page : RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+).html /articles/article.php?id=$1&page=$2&rubrique=$3 [L]
Remarque : il ne doit pas y avoir de retour chariot sur une ligne de règle de réécriture.
Les lignes commençant par le signe dièse (#) sont des commentaires. N'hésitez pas à en ajouter pour rendre vos fichiers plus compréhensibles : ces lignes sont totalement ignorées par le module de réécriture d'URL.
Chaque fichier .htaccess est spécifique à un répertoire ; nous avons pris l'habitude d'indiquer en haut de ce fichier l'emplacement du répertoire sur le site. Chaque répertoire de votre site devra donc proposer son propre fichier .htaccess.
Les deux premières instructions
(Options +FollowSymlinks
et RewriteEngine on)
ne doivent être présentes qu'une seule fois par fichier,
avant toute règle de réécriture.
- L'instruction
Options +FollowSymlinksest facultative mais peut servir dans certaines configurations. - L'instruction
RewriteEngine onindique que nous souhaitons utiliser le module de réécriture d'URL. Si vous avez un problème avec une règle de réécriture que vous venez d'ajouter, vous pouvez désactiver en quelques secondes la réécriture d'URL le temps de comprendre le problème : il vous suffit d'écrireRewriteEngine offà la place deRewriteEngine on.
La suite du fichier est constituée d'une série de règles de réécriture. Chaque règle est écrite sur une seule ligne (sauf règles complexes) et respecte le format suivant :
RewriteRule URL_A_REECRIRE URL_REECRITE
Explications :
RewriteRuleest un mot-clé spécifique au module mod_rewrite qui indique que la ligne définit une règle de réécriture.- Ensuite vient l'URL à réécrire, c'est-à-dire l'URL « propre » sans existence physique sur le serveur.
- Enfin vient l'URL réécrite, c'est-à-dire l'URL telle qu'elle sera appelée en interne sur le serveur.
- Ces 3 éléments doivent être écrits sur une seule ligne, et séparés par un ou plusieurs espaces à chaque fois
Le format de l'URL à réécrire est basé sur les expressions régulières, dont la base devra être acquise pour pouvoir définir des règles de réécriture. Ne vous inquiétez pas, pour la plupart des cas c'est très simple.
Voici la liste des éléments pris en considération dans les règles de réécriture :
| Elément | Explications |
|---|---|
^ |
Indique le début de l'URL à récrire. Ce caractère est facultatif mais il est plus rigoureux de l'utiliser. |
article- |
Cette partie de l'URL n'est pas
utilisée directement. Nous aurions pu écrire art à la place de article. Ce
préfixe peut servir à différencier différents
schémas d'URL, et il permet à l'internaute de mieux
comprendre l'objet de la page. |
() |
Les parenthèses servent à encadrer une variable dont la valeur est récupérée dans la 3ème partie de la ligne. |
[0-9]+ |
Indique que la variable est composée d'un ou plusieurs chiffres. |
$ |
Indique la fin de l'URL à réécrire. Ce caractère est facultatif mais il est plus rigoureux de l'utiliser. |
/articles/ |
Cette partie est parfois facultative (cela dépend de la configuration du serveur). En général il suffit d'indiquer l'emplacement du fichier de manière relative au répertoire dans lequel est situé le fichier .htaccess (donc on peut se passer de cet élément). Sur certains hébergeurs mutualisés (OVH ou Sivit pour n'en citer que deux), vous devez indiquer le chemin complet vers le fichier, à partir de la racine du site, comme dans notre exemple. |
article.php |
Nom du fichier que le serveur doit utiliser pour afficher la page. C'est le nom d'un fichier qui existe physiquement et qui contient un script (PHP dans notre exemple) de gestion de la page dynamique. |
? |
Caractère obligatoire précédant la série de variables passées dans l'URL réécrite. |
id=$1 |
Indique que la variable nommée id prendra la valeur située dans la première paire de parenthèses. |
& |
Caractère utilisé pour séparer 2 variables dans l'URL réécrite. |
rubrique=$2 |
Indique que la variable nommée rubrique prendra la valeur située dans la deuxième paire de parenthèses. |
[L] |
Drapeau (option) signifiant « Last », indiquant au module de réécriture qu'il doit s'arrêter. Plus précisément, si l'URL de la page demandée par le visiteur correspond au schéma défini par cette règle, alors le module de réécriture d'URL ne doit pas examiner les autres règles situées dans le reste du fichier .htaccess. Il n'est pas toujours obligatoire mais il ne fera pas de mal ! |
Cet exemple de règle de réécriture permet déjà de gérer notre rubrique d'articles, mais il existe d'autres règles plus complexes.
Remarque : le livre « Google, trucs de pros » propose dans son chapitre « Le référencement de sites web dynamiques », la syntaxe complète, bien plus approfondie que dans cet article, à utiliser dans le fichier .htaccess. Vous trouverez également de nombreuses informations sur le site officiel d'Apache
Si vous souhaitez en savoir plus à propos du formatage à utiliser pour écrire ces règles :
- ([0-9]{1,2}) Autorise un ou deux chiffres
- ([0-9]*) Autorise tous les chiffres, autant de fois qu'on veut
- (-[a-z]*) Autorise toutes les lettres et tirets, autant de fois qu'on veut
- etc.
je vous invite à consulter un tutoriel sur les expressions régulières PERL ici par exemple.
Modifier tous les liens internes
Maintenant que nous avons défini les schémas d'URL et créé les règles de réécriture, il reste à vérifier que dans tout le site, tous les liens utilisent le bon schéma d'URL.
En effet, les règles de réécriture du fichier .htaccess ne suffisent pas à ce que tout votre site soit au nouveau format, avec des URL propres ! C'est à vous de changer la façon d'écrire les liens, que ce soit dans des pages statiques ou dans des pages dynamiques.
Bien entendu, vous devez pouvoir sauter cette étape si vous incluez la gestion de la réécriture d'URL dès la création du site, puisque vous aurez pris soin de générer dès le début des liens aux bons formats.
Mettre à jour et tester
Il est temps de tester ! Transférez tous les fichiers modifiés en ligne, y compris le fichier .htaccess, puis rendez-vous dans votre navigateur pour tester si la réécriture fonctionne.
Pour reprendre notre exemple, comparez ce que vous obtenez en allant sur :
http://www.notre-site.com/articles/article-12-2-5.html
et sur :
http://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5
Vous devriez avoir exactement la même page…
En cas de blocage complet du site (par exemple avec une erreur de type 500), n'oubliez pas qu'il suffit de supprimer le fichier .htaccess (ou d'annuler les dernières modifications) pour que tout revienne dans l'ordre.
Nous vous conseillons d'utiliser un logiciel de vérification des liens à l'intérieur de votre site (vous pouvez par exemple choisir Xenu's Link Sleuth, à un logiciel à installer sous Windows. Ce type de logiciel agit comme Googlebot : il parcourt vos pages en suivant tous les liens qu'il trouve. S'il ne trouve aucun lien mort (un lien menant à une page introuvable), alors vous n'avez fait aucune erreur ni dans vos règles de réécriture ni dans vos liens internes. Sinon, corrigez en conséquence.
Page suivante : Optimiser toutes les pages dynamiques
Récemment dans le forum URL Rewriting
- CNAME mieux que le 301 et le .htaccess
- aide pour une url rewrité
- URL rewriting sous Wamp Serveur 2.0
- [RESOLU] Redirection d'un .fr vers un .com
- RESOLU - redirection de l'index vers le nom de domaine
- Probleme avec mon htaccess et redirection : besoin d'AIDE!
- probleme de redirection + SSL personne n'a la reponse ?
- Rediriger vers un sous-répertoire
- www et multi-domaines
- url rewriting, syntaxe pour les expressions régulières...
- Question sur URL Rewriting & Google...
- url rewriting - besoin d'aide
- Déplacement d'un forum à la racine vers un sous domaine
- Pouvez vous m'expliquer ce fichier htaccess...
- [Résolu] Caractéres indesirable qui suivent ma redirection.
Publicités
- Hébergement web pro

- Pour un bon référencement, il faut un bon hébergeur.
- Testez Sivit, l'hébergeur choisi par WRI (garantie 30 jours satisfait ou remboursé) à partir de 1,90 EUR HT/mois
- Best seller
