SEO: Le meilleur tutoriel sur l’URL Rewriting (réécriture d’URL) !

SEO: Le meilleur tutoriel sur l'URL Rewriting (réécriture d'URL) !

Article mis à jour le 10 février 2017, publié initialement le 4 juin 2004

Sommaire

URL Rewrite : introduction

Les sites web dynamiques sont parfois des obstacles pour les moteurs de recherche, mais la situation a plutôt tendance à s’améliorer. Cependant, parfois, certaines pages représentent un réel obstacle pour les robots et il faut intervenir, mettre en œuvre une procédure spécifique, pour faire en sorte qu’un site soit indexé par les « Google et consort ». Parmi les solutions à disposition des référenceurs, celle de l’URL rewriting (ou « réécriture d’URL ») semble la meilleure et, en tout cas, la plus efficace.

Les sites dynamiques génèrent la plupart du temps des pages aux URL longues et complexes, du fait de la présence de variables. Avec des pages dynamiques, un seul fichier permet de créer dynamiquement des centaines ou des milliers de pages. Une fois que la réécriture des URL est mise en place sur un site, les pages seront accessibles grâce à des URL « propres », que ce soit pour les internautes ou pour les robots des moteurs de recherche.

Ainsi, une page qui était accessible à l’adresse :

https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5

sera accessible après URL rewriting à l’adresse (par exemple) :

https://www.notre-site.com/articles/article-12-2-5.html

Ces URL dites « propres » (débarrassées de caractères spéciaux comme « ? » ou « & ») facilitent l’indexation des sites dynamiques, et donc leur référencement dans les moteurs.

En plus de cet avantage indéniable, la réécriture d’URL permet d’intégrer des mots-clés dans l’URL (attention, c’est loin d’être un critère majeur du référencement).

Enfin, elle permet également de renforcer la sécurité du site en masquant les noms des variables passées dans l’URL. Si l’extension des URL « propres » est neutre (par exemple .html ou .htm ou même aucune), il est même possible de masquer le langage utilisé sur le serveur (PHP dans notre exemple).

L’URL Rewriting, qu’est-ce que c’est ?

Le principe de la réécriture d’URL est donc de mettre en place un « système » sur le serveur pour qu’il sache interpréter ce nouveau format d’URL. Dans notre exemple, quand un visiteur accède à la page https://www.notre-site.com/articles/article-12-2-5.html, le serveur doit renvoyer exactement la même chose que si le visiteur avait demandé à accéder à la page https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5.

La correspondance entre les deux schémas d’URL est alors décrite sous forme de « règles de réécriture ». Chaque règle permet de décrire un format d’URL. Dans l’exemple ci-dessus, la règle de réécriture va indiquer au serveur de prendre le premier nombre comme numéro d’article, le deuxième comme numéro de page et le troisième comme numéro de rubrique.

La technique de réécriture d’URL la plus connue est celle disponible sur les serveurs Apache, le plus souvent utilisés avec le langage PHP. Sauf mention spéciale, tous les exemples de cet article seront donc consacrés au langage PHP et au serveur Apache.

Remarque : lisez également l’URL Rewriting pour les débutants, un autre article qui explique les bases de cette technique.

Comment mettre en place l’URL Rewriting

Si vous avez déjà un site dynamique en ligne, voici les étapes à suivre pour mettre en place l’URL Rewriting :

  1. Vérifier que votre hébergeur permet l’utilisation de l’URL Rewriting
  2. Identifier les pages dynamiques dont l’URL comporte des paramètres, et choisir un nouveau schéma d’URL « propre »
  3. Ecrire les règles de réécriture dans le fichier .htaccess adéquat.
  4. Changer tous les liens vers chaque fichier dont l’URL a changé.
  5. Mettre à jour votre site et vérifier que tout fonctionne.

Ouf… 😉 Voyons maintenant chacune de ces étapes les unes après les autres :

1- Vérifier si l’URL Rewriting est compatible avec son 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 webSupport de la réécriture d’URLDétails
ApacheGéré par le module mod_rewrite, un module standard d’Apache à partir de la version 1.3.27Le module mod_rewrite doit être actif :le fichier de configuration d’Apache (httpd.conf) doit contenir cette ligne :LoadModule rewrite_module libexec/mod_rewrite.soainsi que celle-ci :AddModule mod_rewrite.c
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 ou via des projets open source comme codeproject.com Aucune 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.

Pour vérifier si le module mod_rewrite d’Apache est activé, il vous suffit de suivre les points suivants :

  1. 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/.
  2. 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 :
    TestOK !
  3. 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]
  4. Transférez ce répertoire et ces deux fichiers sur votre site, puis rendez-vous à l’adresse

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 gère pas l’URL rewrite, 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.

2- Définir les formats d’URL

Reprenons notre exemple de site qui dispose d’une base de données d’articles, et dressons la liste des types d’pourquoi il faut éviter ces caractères dans l’URL)

Le tiret et le point sont les plus simples ; la virgule pose parfois problème ; 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 (il n’est pas considéré comme un séparateur de mots).

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.html
  • article-ARTICLE-PAGE-RUBRIQUE.html

Bien entendu, ARTICLE, RUBRIQUE et PAGE représentent ici des numéros.

3- Rédiger les règles de réécriture (rewrite rules)

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.

Ne vous inquiétez pas si vous trouvez ça compliqué, au début c’est normal. Mais ce tuto va vous aider à rédiger les règles de réécriture dans le .htaccess pour l’URL Rewriting.

Passons directement à la solution que nous allons commenter… Voici le contenu du fichier .htaccess situé dans notre répertoire :

#--------------------------------------------------
# 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 +FollowSymlinks est facultative mais peut servir dans certaines configurations.
  • L’instruction RewriteEngine on indique 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’écrire RewriteEngine off à la place de RewriteEngine 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 :

  • RewriteRule est 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 (regex), 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émentExplications
^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 Nerim 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.phpNom 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=$1Indique 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=$2Indique 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.

Vous trouverez la syntaxe complète à utiliser dans le fichier .htaccess 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.

4- 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.

Faites la même chose si vous utilisez des sitemaps : ils ne doivent lister que les URL au nouveau format.

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.

Par contre en cas de refonte avec changements d’URL, vous avez le même genre de vérifications à faire.

5- 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 :

https://www.notre-site.com/articles/article-12-2-5.html

et sur :

https://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.

Comme dit précédemment, je vous conseille 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.

Pour aller bien plus dans les détails, testez RMTech de ma plateforme My Ranking Metrics). 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.

Attention toutefois, Xenu avec ses réglages par défaut peut solliciter fortement votre serveur : il vaut mieux l’éviter si vous avez un gros site avec des centaines de pages à crawler (ou plus).

Rediriger les anciennes URL

Votre travail n’est toujours pas fini ! En effet, les anciennes URL fonctionnent toujours, et tous ceux qui chercheront à y accéder (internautes ou robots) ne se rendront pas compte qu’ils ne sont pas sur les URL officielles (celles au nouveau format). Le fait que les anciennes URL cohabitent avec les nouvelles pose des problèmes de contenus dupliqués.

Pour résoudre ce problème et « nettoyer » votre site, il suffit de faire des redirections 301. Pour chaque page, faites une redirection 301 de l’ancienne URL vers la nouvelle (en plus de la réécriture d’URL). Si je reprends un des exemples précédents, :

  • l’URL https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5 doit être redirigée en code 301 vers l’URL https://www.notre-site.com/articles/article-12-2-5.html
  • le serveur doit réécrire (en interne, de façon transparente) en https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5

Optimisation du référencement des pages dynamiques

Une fois que vous avez mis en place la réécriture d’URL sur tout votre site, il reste deux étapes pour terminer l’optimisation de votre site (du point de vue du référencement) :

  1. Créer des liens vers toutes les pages.
  2. Optimiser le code de chaque page dynamique.

1. Créer des liens vers toutes les pages

Les sites dynamiques comportent bien souvent un grand nombre de pages. La mise en place de la réécriture d’URL permet une bonne indexation, mais ce n’est pas une condition suffisante pour que toutes les pages de votre site soient indexées. En effet, il est nécessaire de créer les conditions pour que les robots des moteurs puissent accéder à vos pages en suivant les liens présents sur votre site.

2. Optimiser le code de chaque page dynamique

Une page dynamique n’est rien d’autre qu’une page HTML créée sur mesure par un script serveur (par exemple en PHP). En général une telle page repose sur un modèle de page, reprenant le design du reste du site, et comportant certaines zones dont le contenu est généré en effectuant des requêtes dans une base de données.

Il faut optimiser le code de la page HTML pour le référencement de la même manière que pour une page statique.

Nous vous conseillons de prévoir sur toutes ces pages les zones suivantes, à remplir de manière unique pour chaque page :

Si vous respectez ces consignes, vous disposerez rapidement d’un site dont les milliers de pages seront indexées et toutes optimisées pour le référencement !

Conclusion

Les sites dynamiques se sont imposés car ils apportent une grande souplesse de gestion et permettent d’exploiter de grandes quantités d’information. Même si on ne trouve presque que ça, ils sont aujourd’hui encore bien souvent mal conçus en termes de référencement, puisqu’ils cumulent souvent de nombreux facteurs bloquants (identifiants de session, URL complexes).

La mise en place de la réécriture d’URL est un travail parfois long, complexe et technique, mais qui permet d’obtenir des résultats sans commune mesure avec les sites statiques. Une fois bien mise en place, la réécriture d’URL (associée à une optimisation dynamique des pages) permet bien souvent de positionner le site sur Google ou les moteurs de recherche « du marché » pour des milliers d’expressions plutôt que quelques dizaines comme c’est le cas habituellement avec les sites statiques.

Voir aussi sur WebRankInfo

Je vous encourage à lire ces autres articles :

Si vous avez des questions ou des difficultés à mettre en place l’URL Rewriting sur votre site, posez votre question dans le forum URL Rewriting de WebRankInfo ! En effet, les commentaires, trop nombreux, sont désormais fermés.

#meilleur #tutoriel #sur #lURL #Rewriting #réécriture #dURL