Utiliser des directives .htaccess pour booster son référencement et sa sécurité

Mathieu Chartier SEO 4 commentaires

Les CMS et autres frameworks ont bien compris l'importance de la réécriture d'URL et des fichiers .htaccess (ou web.config sur IIS) pour l'accessibilité mais aussi pour le référencement (SEO) et la sécurité web. Toutefois, il reste encore des irréductibles gaulois qui conçoivent encore des sites à la main ou des outils dont les configurations de serveur doivent être écrites de A à Z (ou corrigées dans le meilleur des cas).

Cette brève ne pas va changer le monde mais doit vous servir à apprivoiser quelques directives et règles bien pratiques lorsqu'on veut mettre les mains dans le cambouis pour optimiser les fichiers .htaccess.

Optimiser son référencement (SEO) avec le fichier .htaccess d'Apache

Une directive méconnue qui peut servir dans certains cas est AccessPathInfo. Son rôle est d'autoriser ou non l'accès à des URL quand des éléments sont ajoutés en fin de requête (réglé par défaut sur "Default", qui oscille entre "on" et "off" en gros). Prenons un exemple : si vous avez une URL avec le chemin /repertoire/mapage.html, il serait possible d'y accéder en tapant /repertoire/mapage.html/monhack.

En soi, cela n'a rien de dérangeant à première vue car cela redirige bien vers la page originelle (mapage.html ici). Toutefois, cela signifie aussi que vous avez plusieurs "URL" qui pointent vers la même page. Aux yeux des moteurs de recherche, cela signifie que vous avez un problème de DUST (URL dupliquées) s'il prend en compte ces adresses web, mais surtout votre jus de lien (juice link) est "divisé" entre ces liens, ce qui est dommageable pour votre netlinking.

Ce cas m'est déjà arrivé sans que j'y prête une grande attention par le passé, je parle en connaissance de cause. Il arrive que des annuaires, des partenaires ou même des internautes se trompent en tapant l'URL du site (voir nous faisons la faute nous même en interne dans notre site web). Comme cela ne renvoie pas d'erreurs 404, l'erreur semble transparente, mais elle cause pourtant quelques dégâts. Dans ce cas, rajoutez ceci dans votre .htaccess :

# Renvoie des erreurs 404 si le chemin de l'URL n'est pas exactement le bon
# N.B. : certaines directives de réécritures peuvent éviter d'utiliser AccessPathInfo si elles sont bien écrites...
AcceptPathInfo Off

Retenez que chaque hébergeur a sa vérité, et l'omniprésence actuelle d'OVH notamment fait que les certitudes qui sont en place pour cet hébergeur ne sont pas toujours vraies pour les autres. Dans le même esprit que la directive précédente, l'usage des options Multiviews d'Apache peut s'avérer majeur pour réussir une bonne réécriture d'URL.

À la différence d'AccessPathInfo, les options Multiviews redirigent les URL faussées vers la ressource qui s'en rapproche le plus (mesuré selon un algorithme d'Apache). Pour reprendre notre exemple précédent, si nous tapons l'URL /repertoire/mapage.html/monhack, l'option Multiviews active la négociation d'URL (du mod_negociation d'Apache) et va chercher tous les documents de la forme monhack.*. Cela présente deux inconvénients majeurs :

  1. Les soucis de DUST et de jus de liens déjà évoqués précédemment peuvent là aussi s'appliquer. L'URL ne renvoyant pas une erreur 404, le chemin aboutit à une URL donnée (sauf si aucune correspondance ne se trouve bien entendu).
  2. Quelques soucis de sécurité peuvent subvenir si l'option est activé, en permettant ainsi aux pirates de découvrir des noms de fichiers ou de répertoire, en incluant des scripts véreux, etc. (c'est rare, je vous rassure, mais la possibilité est là)

Selon votre hébergeur, il est parfois utile de désactiver cette option, c'est notamment le cas pour OVH et Infomaniak. Il suffit alors de taper la directive suivante :

# Désactive la négociation des contenus pour les URL faussées
# Ne renvoie que les URL exactes comme URL valides !
Options -Multiviews

Terminons par un directive toute bête qui peut vous éviter un point négatif dans le PageSpeed de Google et qui vous évite parfois de notifier l'usage de l'UTF-8 dans toutes vos pages web :

# Force l'usage de l'UTF-8 dans toutes les pages du site
AddDefaultCharset UTF-8

Toutes ces informations ne sont pas toujours nécessaires selon la configuration de votre serveur et de vos besoins, mais pour avoir créé plusieurs sites web à la main, il m'est arrivé d'être confronté à de réels problèmes que ces solutions m'ont permis de résoudre, il me semblait intéressant de vous les fournir...^^

Petit rappel pour les fans de sécurité, sachez qu'il est possible de modifier le nom du fichier .htaccess. Comme il est souvent appelé ainsi, les pirates l'attaquent directement quand cela est possible. Pour ceux qui ont un serveur dédié, il suffit d'ajouter une directive directement via Apache :

AccessFileName .nom_du_fichier