Fichier htaccess

Qu’est-ce qu’un fichier htaccess ?

Il s’agit d’un fichier spécial (commençant par un point) dans lequel vous avez la possibilité d’ajouter des directives précises comme :

  • Effectuer des redirections,
  • Ajouter des entrées pour le cache,
  • Créer des règles de réécritures d’adresses,
  • Modifier des paramètres PHP sur son compte,
  • Réaliser une authentification (avec le fichier .htpasswd),
  • Modifier les propriétés de PHP (si le PHP est exécuté en module Apache),
  • Gérer l’accès (restreindre, bloquer totalement.., pour des adresses IP, forcer l’utilisation d’identifiants..) à un fichier et/ou dossier, à une URL,
  • Et bien d’autres fonctionnalités que nous n’allons pas citer dans cet article qui vise une utilisation avancée et non experte du fichier htaccess.

Le fichier .htaccess ne modifie le comportement que du répertoire (et des sous-répertoires) où il est situé, il est possible de mettre un fichier dans un sous-répertoire qui annule ou définit des règles différentes que celui dans le répertoire parent.

Ce fichier de configuration d’Apache, permet de définir des règles pour des répertoires du site web. Il est utilisé généralement pour mettre en place :

  • des droits d’accès
  • des redirections
  • des messages d’erreur personnalisés

Nous présentons dans cet article quelques directives pour aider nos abonnés à comprendre le mécanisme de ce fichier.

Notez que ce lien d’aide n’est pas une référence pour une utilisation experte du htaccess.

Appeler une page d’erreur personnalisée

Il faut d’abord ajouter les lignes suivante dans un fichier .htaccess :

ErrorDocument 404 /monfichier404.html
ErrorDocument 403 /monfichier403.html
ErrorDocument 404 http://www.mondomaine.tld

Bloquer l’accès à mon site web

Vous pouvez en premier lieu bloquer ou autoriser l’accès à votre site web pour des adresses IP et/ou des domaines spécifiques .
Pour cela, vous devez d’abord créer un fichier .htaccess dans le dossier racine de votre site web (/www/monsite/ par exemple) et y ajouter les directives suivantes :

Blocage par adresse IP

order allow,deny Deny from 88.55.44.22
Deny from 44.62.53.21

Blocage par domaine

Deny from votredomaine.com
Deny from sondomaine.fr

Autoriser des IP

order allow,deny
Allow from 88.55.44.22
Allow from 44.62.53.21

Autoriser un domaine

order allow,deny
Allow from mondomaine.com
Allow from sondomaine.net

Autoriser et bloquer

order allow,deny
Allow from 88.55.44.22
Allow from 44.62.53.21
Allow from mondomaine.com
Allow from tondomaine.net
Deny from 77.56.44.22
Deny from 55.26.53.25
Deny from votredomaine.com
Deny from sondomaine.fr


 Si il y a déjà un fichier .htaccess dans le dossier de votre site web, alors ajoutez ces directives dans le fichier existant.

Empêcher le listing d’un répertoire

Indiquez en premieu lieu la ligne suivante dans un fichier .htaccess du répertoire en question : Il faut rajouter dans un fichier .htaccess des lignes de ce type:

Options -Indexes

Interdire un répertoire à tout le monde

Indiquer d’abord cette ligne dans le fichier .htaccess du répertoire en question :

deny from all

Créer une authentification sécurisée

Afin de mettre en place une authentification sécurisée pour accéder à un répertoire, veuillez d’abord suivre les étapes suivantes :

  1. Générer en premier lieu un mot de passe crypté
  2. Copier en deuxième lieu le couple login / mot de passe obtenu dans un fichier nommé .htpasswd
  3. Créer en dernier lieu un fichier .htaccess dans le répertoire à protéger et y inscrire le contenu suivant (à adapter selon vos besoins) :

    AuthName « Authentification requise »
    AuthType Basic
    AuthUserFile « /home/usersX/x/xxx/www/repertoire_secret/.htpasswd »
    Require valid-user

Explications :

  • AuthName : défini le texte qui sera affiché dans la fenêtre d’authentification.
  • AuthUserFile : contient le chemin vers le fichier .htpasswd. Attention, il faut entrer le chemin absolu vers le fichier.

Rediriger http vers https

Indiquez tout d’abord les lignes suivantes au début du fichier .htaccess de votre site pour que le flux http soit automatiquement redirigé vers https :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

ou encore

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Contactez ensuite votre webmaster avant l’ajout de cette redirection si vous utilisez un CMS (WordPress, Drupal, Joomla, autre) cela vous évitera de créer des boucles de redirections qui mettent en péril le bon fonctionnement de votre site web.

URL Rewriting

L’URL Rewriting fonctionne sur tous nos hébergements.

RewriteEngine On

Le code suivant permet de ré-écrire l’URL de votre site en exécutant les conditions de la section RewriteCond, et ce, pour tout accès provenant du port HTTP 80, qui est le port par défaut de ce protocole.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !
RewriteRule ^(.*)$ https://www.mondomaine.tld/$1 [R=301,L]

La ligne ci-dessous permet de créer une redirection permanente SANS importation du référencement du site redirigé.

Redirect permanent / http://www.unsiteverslequel-redirigermondomaine.tld

La ligne suivante permet de créer une redirection permanente AVEC importation du référencement du site redirigé.

Redirect 301 /anciennepage/ http://www.monnouveausite.com/nouvellepage

Dans le cas où vous avez remplacé votre ancien site par un nouveau, et que les deux sites n’ont pas la même squelette de dossiers et fichiers. L’ancien étant bien référencé, vous ne souhaitez pas perdre ce référencement. Cette ligne permettra de ce fait, de passer sur la nouvelle URL sans perdre la position de votre domaine dans les moteurs de recherche.

Optimiser les performances de mon site

Veuillez suivre ce lien d’aide qui explique comment optimiser les performances d’un site web.
Mis à jour le 28 septembre 2022

Articles connexes