C’est quoi le fichier .htaccess ?
Le fichier .htaccess est un fichier de configuration du serveur spécifique au serveur Apache. Il sert à définir des directives particulières qui agissent sur le comportement du serveur pour mieux répondre aux besoins d’un site web.
Il existe plusieurs types de serveur, leur rôle est d’écouter les requêtes émises par un navigateur et d’y répondre en envoyant une page web. Bien qu’il existe d’autres serveurs web comme le serveur Nginx, le fichier .htaccess est uniquement spécifique au serveur Apache utilisé par un grand nombre de sites internet.
Ainsi, contrairement à d’autres serveurs web, Apache offre une souplesse significative en permettant aux utilisateurs de modifier directement certaines configurations du serveur via le fichier .htaccess. Cette capacité offre un contrôle précieux pour personnaliser la manière dont le serveur doit réagir aux requêtes reçues.
Par exemple, le fichier .htaccess vous donne la possibilité de mettre en place des redirections, diriger le trafic de HTTP vers HTTPS pour assurer une connexion sécurisée, et même restreindre l’accès à votre site en fonction des adresses IP spécifiques, etc. Ces fonctionnalités offrent aux administrateurs web un moyen puissant d’optimiser la sécurité, la convivialité et la performance de leur site.
Emplacement du fichier .htacces
En règle générale, le fichier est localisé à la racine du répertoire du site. Mais par défaut, ce fichier peut être présent ou non, cela dépend de votre hébergeur et du Système de Gestion de Contenu (CMS) de votre site dans le cas où votre site serait conçu avec un CMS bien sûr.
De plus, en dehors de racine de votre site, vous pouvez mettre en place des fichiers .htaccess dans des répertoires spécifiques pour appliquer des règles uniquement à ces parties du site. En fait, les directives d’un fichier .htaccess dans un répertoire s’appliquent au répertoire dans lequel le fichier est situé, ainsi qu’à ses sous-répertoires. Cependant, bien que cette approche de configuration soit possible, il est plus pratique, pour des raisons de simplicité et de maintenance, de regrouper l’ensemble des directives dans un unique fichier .htaccess situé à la racine.
Le fichier .htacces et WordPress
Lorsque vous créez votre site avec le CMS WordPress, ce dernier génère automatiquement le fichier .htaccess en y incorporant des codes de permaliens qui jouent un rôle essentiel dans la configuration de l’aspect des URL de votre site. Cette réécriture des URL est importante tant pour les moteurs de recherche que pour les visiteurs de votre site.
Voici un aperçu du contenu par défaut du fichier .htaccess généré par une installation de base de WordPress :
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Par ailleurs, la configuration de certains plugins, tels que les plugins de cache ou de compression d’images, peut automatiquement insérer des segments de code dans votre fichier .htaccess. Ces ajustements sont souvent nécessaires pour optimiser les performances de votre site, améliorer la vitesse de chargement des pages et offrir une meilleure expérience utilisateur. Si vous souhaitez personnaliser davantage votre fichier .htaccess, vous avez la possibilité d’y apporter vos propres modifications. Ainsi, nous verrons comment manipuler le fichier .htaccess dans la suite de ce tutoriel.
La manipulation du fichier .htaccess
Pour accéder au fichier .htaccess de votre site, vous pouvez utiliser un client FTP. Ce logiciel vous permettra de vous connecter au serveur qui héberge les différents fichiers de votre site, dont le fichier .htaccess situé à la racine.
Une fois connecté, téléchargez le fichier sur votre ordinateur. Utilisez un éditeur de texte de votre choix pour apporter les modifications nécessaires. Envoyez ensuite le fichier vers le répertoire racine de votre site en remplacement de l’ancien fichier .htaccess. Si le fichier .htaccess n’est pas présent par défaut, vous avez la possibilité de le créer et de l’éditer directement sur votre ordinateur afin de l’envoyer sur votre site via le client FTP.
Il est important de manipuler le fichier .htaccess avec précaution, car une erreur à ce niveau pourrait rendre l’ensemble de votre site inaccessible. Par mesure de précaution, il est fortement recommandé de créer une sauvegarde de votre fichier .htaccess avant d’apporter toute modification, facilitant ainsi le processus de restauration en cas d’erreur.
Par exemple, si vous utilisez le CMS WordPress, vous pouvez retrouver votre fichier à la racine au même niveau les dossiers « wp-admin », « wp-content » et « wp-includes ». Le répertoire racine variera en fonction de votre service d’hébergement. Sur OVH, il sera désigné par le répertoire « www« , tandis que sur Hostinguer et o2switch, ce sera le répertoire « public_html« .
Quelques codes qu’on peut intégrer au fichier .htaccess
Modification de la page d’accueil par défaut
Généralement, c’est la page « index.html » qui est considérée comme la page d’accueil par défaut de votre site, mais vous pouvez changer cela en spécifiant une page spécifique qui vous servira de page d’accueil. Par exemple, dans le code ci-dessous, remplacez « pageAccueil.html » par la page que vous souhaiteriez mettre en accueil.
# Modification de la page d'accueil par défaut
DirectoryIndex pageAccueil.html
Mettre en place une page d’erreur 404
Il est essentiel de rediriger les internautes vers une page d’erreur préparée pour offrir une meilleure expérience utilisateur lorsqu’une erreur se produit. Pour l’erreur classique de type « 404 » par exemple, au lieu d’afficher l’erreur en dur, vous pouvez faire une redirection vers la page d’erreur « pageErreur404.html ».
# Mettre en palce une page d'erreur
ErrorDocument 404 /pageErreur404.html
Définir l’encodage des caractères par défaut à UTF-8
Les encodages jouent un rôle crucial dans le contexte d’un site web pour assurer la bonne affichage des caractères. L’encodage UTF-8 est très largement attisé grâce à sa polyvalence, sa compatibilité et son efficacité. Il vise à représenter de manière exhaustive les caractères couvrant la plupart des écritures du monde.
# Définir l'encodage des caractères par défaut à UTF-8
AddDefaultCharset UTF-8
Désactiver le directory listing
Par défaut, sans aucune configuration de sécurité, une tierce personne peut accéder à la liste des répertoires de votre site ainsi qu’à tous les fichiers de votre site. On appelle cela le directory listing et il est important de l’empêcher afin de protéger vos fichiers sensibles et importants dont l’accès pourraient nuire à votre site.
Pour le tester, tapez dans votre barre de recherche « url-de-votre-site
/wp-content/uploads ». Si tout va bien, vous obtiendrez une page avec l’erreur 403 (L’erreur 403 apparaît lorsqu’un utilisateur essaie d’accéder à un contenu dont il ne possède pas les droits). Dans le cas contraire, vous aurez une liste de vos répertoires de telle manière que vous pouvez naviguer dans les répertoires, cela ressemble à ceci :
Pour corriger cella afin d’empêcher à n’importe qui d’accéder à vos fichiers, vous pouvez insérer ce code dans votre fichier .htaccess.
# Désactiver le directory listing
Options -Indexes
Désactiver le hotlinking des images de votre site
Le hotlinking se produit lorsque quelqu’un utilise directement l’URL de vos images sur son site, consommant ainsi votre bande passante. Pour désactiver le hotlinking de vos images, vous pouvez utiliser le fichier .htaccess pour repérer et bloquer l’accès aux demandes qui ne proviennent pas de votre propre site. Voici un exemple de code pour désactiver le hotlinking en remplaçant « votresite » par l’URL de votre site.
# Désactiver le hotlinking des images de votre site
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?votresite\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
</IfModule>
Redirection 301 d’une page spécifique vers une autre page
Les redirections 301 vous permettent de rediriger les utilisateurs qui souhaitent accéder à une page vers une autre page. Cela peut être utile en cas d’indisponibilité de l’ancienne page afin de ne pas nuire à l’expérience utilisateur.
# Redirection 301 d'une page spécifique vers une autre page
Redirect 301 /ancien-chemin http://www.example.com/nouveau-chemin
Dans cet exemple, toutes les requêtes vers /ancien-chemin seront redirigées vers http://www.example.com/nouveau-chemin avec une redirection permanente (301).
Redirection vers HTTPS
La redirection du trafic d’un site vers une connexion HTTPS sécurisée est une pratique recommandée pour plusieurs raisons liées à la sécurité et à la confidentialité des utilisateurs.
# Redirection vers HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Redirection de l’adresse sans www vers celle avec www
Si selon vos configurations, vous préférez que l’adresse de votre site, qui apparaîtra dans la barre de recherche des navigateurs, commence par « www », vous avez la possibilité de rediriger automatiquement les requêtes sans « www » vers l’adresse incluant « www », assurant ainsi une cohérence dans l’affichage.
# Redirection de l'adresse sans www vers celle avec www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^votresite\.com [NC]
RewriteRule ^(.*)$ http://www.votresite.com/$1 [L,R=301]
Toute requête vers votresite sans le préfixe www sera redirigée vers http://www.votresite.com avec une redirection permanente (301). Assurez-vous de remplacer votresite\.com par le nom de votre propre site.
Redirection de l’adresse avec www vers celle sans www
Inversement, vous pouvez faire le contraire de ce qui précède.
# Redirection de l'adresse avec www vers celle sans www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.votresite\.com [NC]
RewriteRule ^(.*)$ http://votresite.com/$1 [L,R=301]
De la même manière que ci-dessus, toute requête vers www.votresite.com sera redirigée vers http://votresite.com avec une redirection permanente (301).
Bloquer une adresse IP
Si pour une raison donnée, vous voulez empêcher une adresse IP d’accéder à votre site, le fichier .htaccess peut vous être utile.
# Bloquer une adresse IP
<RequireAll>
Require all granted
Require not ip XXX.XXX.XXX.XXX
Require not ip XXX.XXX.XXX.XXX
</RequireAll>
Remplacer XXX.XXX.XXX.XXX par l’adresse IP que vous souhaitez bloquer. Vous pouvez ajouter autant de « Require not » correspondant à chaque adresse IP que vous souhaitez bloquer.
Conclusion
En conclusion, le fichier .htaccess est un outil essentiel pour configurer et sécuriser les sites web. Bien qu’il offre des fonctionnalités puissantes, une manipulation prudente est impérative pour éviter des erreurs qui pourraient rendre le site inaccessible. La création préalable d’une sauvegarde est fortement recommandé, assurant une sécurité lors des modifications. En maîtrisant cet élément clé, les webmasters peuvent optimiser et protéger efficacement leurs sites.