Les fichiers de con­fi­gu­ra­tion .htaccess (en français : accès hy­per­texte) per­met­tent aux Web­mas­ters de pa­ra­mé­trer leurs règles relatives aux ré­per­toires de leurs sites sur des serveurs NCSA tels que le HTTP d’Apache. Ces fichiers dé­fi­nis­sent par exemple quels uti­li­sa­teurs ont le droit d’accès à certaines données. Un autre exemple typique d’astuce .htaccess serait la mise en place d’une re­di­rec­tion au­to­ma­tique.  

C’est quoi exac­te­ment un fichier .htaccess?

Le terme .htaccess désigne un fichier texte dont l’uti­li­sa­teur ayant les droits d’ad­mi­nis­tra­tion se sert pour con­fi­gu­rer un serveur Web com­pa­tible à NCSA. Cette technique a été inventée dans les années 90 pour le serveur Web NCSA HTTPD, très innovant pour l’époque. Ac­tuel­le­ment, elle in­ter­vient avant tout sur le serveur HTTP Apache dont l’ex­ploi­ta­tion est gérée par plusieurs fichiers centraux, les « httpd.conf ». Ces données de con­fi­gu­ra­tion su­pé­rieures sont en­re­gis­trées en règle générale dans un ré­per­toire du programme du serveur Web et définis par l’ad­mi­nis­tra­teur du serveur. Ils dé­ter­mi­nent si un uti­li­sa­teur a le droit de modifier la con­fi­gu­ra­tion du serveur grâce à des astuces .htaccess. Si oui, celui-ci peut alors créer et modifier des fichiers .htaccess pour chaque nouveau ré­per­toire et écraser quelques parties de la con­fi­gu­ra­tion via des ré­per­toires de niveau supérieur.

A chaque con­sul­ta­tion de page, le serveur Web scanne la totalité de ces ré­per­toires su­pé­rieurs sans en sau­ve­gar­der les in­for­ma­tions (le .htaccess d’un sous ré­per­toire écrase donc celui d’un supérieur). Les réglages du serveur qui ont été réalisés avec un fichier .htaccess sont valables dès que celui-ci est déposé sur le ré­per­toire approprié, sans né­ces­si­ter de re­dé­mar­rer le serveur. L’écriture ne doit comporter aucune erreur car elle pourrait empêcher l’accès à tout le serveur. L’ap­pli­ca­tion de ces astuces .htaccess à la lettre peut vraiment faciliter la gestion d’un serveur. Étant donné l’aisance et la rapidité de leur insertion dans la structure existante, on parle aussi souvent d’astuces .htaccess.

Comment créer un fichier .htaccess

Étant donné qu’il s’agit de fichiers textes purs, il est possible de les créer et de les modifier avec n’importe quel éditeur. Le processus de création d’un fichier .htaccess est différent en fonction des accès dis­po­nibles sur le serveur Web. Les serveurs Telnet ou SSH proposent de le créer et de le modifier di­rec­te­ment sur la pla­te­forme serveur. Si vous n'avez qu’un accès FTP à dis­po­si­tion, le fichier devra alors être créé lo­ca­le­ment et ensuite être té­lé­chargé. Si le nom commence par un point, c’est qu’il s’agit d’un fichier de ré­per­toire de système Unix. Celui-ci sera alors considéré comme « caché » et ap­pa­raî­tra invisible lors de l’uti­li­sa­tion de clients FTP.

Ce point peut engendrer un problème lors de la création d’un .htaccess local sur un système Windows mais se résout ra­pi­de­ment. Ainsi, l’éditeur n’attachera pas l’extension .txt si le fichier est en­re­gis­tré sous « tout fichier ». Si le fichier .htaccess contient la bonne directive, il sera expédié dans le bon ré­per­toire et sera tout de suite valide. Cela concerne aussi tout le sous-ré­per­toire.

Con­fi­gu­rer un serveur via une astuce .htaccess

Les uti­li­sa­teurs autorisés par les ad­mi­nis­tra­teurs ont la pos­si­bi­lité via les fichiers .htaccess d’in­fluen­cer ra­pi­de­ment la con­fi­gu­ra­tion de serveurs Web. Ils peuvent par exemple protéger des ré­per­toires entiers d’accès illégaux via une au­then­ti­fi­ca­tion HTTP. Par ailleurs, des pages d’erreurs ou de re­di­rec­tion peuvent s’afficher. Il existe un certain nombre de conseils avec .htaccess. En voici les dix prin­ci­paux.

1. Les pages d’erreur per­son­na­li­sables

Les serveurs Web peuvent afficher par défaut des fichiers HTML standards voire des aver­tis­se­ments codés si une erreur survient lors d’un accès à un site Internet. Ces messages d’erreurs sont souvent bruts et ne sont pas agréables pour les uti­li­sa­teurs. Il est possible avec le fichier .htaccess de créer des pages per­son­na­li­sées qui se marieront mieux avec la charte graphique de votre site Internet. Voici le code à intégrer dans ce cas :

# Votre message d’erreur de l’emplacement local
ErrorDocument 404 / erreur/404.html

Si la page d’erreur se trouve au niveau supérieur du ré­per­toire racine ou d’une URL externe, l’URL complète peut aussi être in­cor­po­rée dans le .htaccess qui se trouve dans ce cas dans le ré­per­toire racine :

# Votre message d’erreur de l’emplacement externe
ErrorDocument 404 / http://www.nom-de-votre-site.com/erreur/404.html

2. Re­di­rec­tion

Une des pos­si­bi­li­tés d’action des fichiers .htaccess est de rediriger les uti­li­sa­teurs vers d’autres pages. Vous pouvez par exemple trans­fé­rer des données uniques à l’intérieur d’un même site Web mais aussi vers un autre domaine. C’est pratique avant tout si vous changez de site Internet. Le code suivant est en­re­gis­tré dans le ré­per­toire racine et veille à ce que les demandes au domaine premier soient re­di­ri­gées vers le nouveau :

# Redirection simple
Redirect / http://www.nouveau-domaine.fr/

Les données uniques peuvent être trans­fé­rées via la même méthode à l’intérieur d’un même site Internet, par exemple si celui-ci change de nom :

# Redirection de données uniques
Redirect /ancienne-page.html nouvelle-page.html

3. Pro­tec­tion par mot de passe

Vous ne souhaitez pas écrire de scripts trop com­pli­qués avec PHP mais vous avez besoin d’un ré­per­toire ou de fichiers protégés sur votre serveur Web ? Vous pouvez alors à la place utiliser des astuces .htaccess pour la création de votre domaine. Pour bé­né­fi­cier de cette pro­tec­tion de mots de passe, il vous faudra un deuxième fichier avec le nom .htpasswd dans lequel les mots de passe seront en­re­gis­trés. Ceux-ci peuvent être encodés sous le système Unix, il existe pour cela dif­fé­rents gé­né­ra­teurs de .htpasswd sur la Toile. Ces ré­per­toires protégés peuvent être créés ainsi :

# Protection simple de mot de passe avec .htaccess
AuthType Basic
AuthName "fichiers réservés"
AuthUserFile /< chemin absolu vers le fichier mot de passe >/.htpasswd
AuthPGAuthoritative Off
require user User1 User2 User3

Le .htpasswd est créé en même temps que les nouveaux mots de passe codés des uti­li­sa­teurs :

# données .htpasswd, identifiants et mots de passe
User1:duCmo1zxkKx6Y
User2:mou3IYjSLpGWI
User3:HGKS9XzDXXAXQ

Pendant que le fichier .htpasswd est classé en haut du ré­per­toire racine, le .htaccess doit se trouver dans le celui qui est protégé.

4. Augmenter la mémoire PHP

L’uti­li­sa­tion d’ap­pli­ca­tions PHP est soumise à une limite de mémoire causée par les scripts PHP sur le serveur. Celle-ci peut être augmentée en fonction des besoins en utilisant la directive suivante :

# PHP Memory Limit
php_value memory_limit 128M

La valeur de 128 M équivaut dans ce cas à une limite de 128 MegaBytes. D’autres limites peuvent être réglées en tenant compte des besoins de stockage et des exigences en matière de serveurs.

5. Changer le fuseau horaire du serveur Web

Il est possible d’adapter le fuseau horaire sur le .htaccess si le serveur Web est réglé sur une heure erronée :

# Insérer le fuseau horaire
SetEnv TZ Europe/Paris

6. Bloquer des adresses IP

Il est possible de refuser l’accès de sites Internet à des adresses ou domaines IP. Avec le code adéquat, il est même possible d’interdire l’accès à toutes les adresses IP tout en le ga­ran­tis­sant à une poignée. Ainsi, l’offre Internet peut être mise à la dis­po­si­tion de seulement quelques employés sur l’intranet d’une en­tre­prise. La directive suivante résume certaines des li­mi­ta­tions d’accès possibles :

# Fichiers pour réguler les zones IP
Order deny,allow
Deny from .aol.com
Deny from 192.168
Allow from 192.168.220.102

L’entrée « Order » permet de définir l’ordre de l’in­ter­pré­ta­tion des données, le sens n’est donc pas important. Les autres entrées com­mu­ni­quent au serveur que tous les uti­li­sa­teurs de aol.com ainsi que ceux dont l’adresse de domaine est 192.168 n’ont pas le droit d’utiliser le site Internet. L’exception est pour l’uti­li­sa­teur de l’adresse IP 192.168.220.102.

7. Rediriger sa présence sur le Web de HTTP à HTTPS

Si vous utilisez un cer­ti­fi­cat SSL pour votre domaine, il est possible de le rediriger via une directive .htaccess sur une requête HTTPS codé.

# Activez HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ https://votre-domaine.fr/$1 [R=301,L]

8. Activer l‘accès à des données sur un na­vi­ga­teur

Grâce à cette directive, vous pouvez afficher le contenu du ré­per­toire et proposer à d’autres uti­li­sa­teurs de le té­lé­char­ger :

# Montrez le contenu du répertoire
Options +Indexes

9. Interdire le Hot­lin­king d’images

Le Hot­lin­king permet à une tierce personne d’utiliser l’adresse d’un fichier publié sur un site Internet, le plus souvent une image, et de l’afficher sur un autre site sans l’en­re­gis­trer sur son propre serveur. Cela entraîne une aug­men­ta­tion du volume de données sur le site d’origine, sans que son pro­prié­taire ne puisse l’in­fluen­cer. Cette astuce .htaccess permet de bloquer ces liens grâce à la directive suivante :

# Hotlinking interdit 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http:// www.votre-domaine-d-hebergement/.*$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://www.votre-domaine-d-hebergement /.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ - [F]

10. Définir la police de documents

Les accents peuvent poser problème si aucun codage de ca­rac­tères n’existe. Il est possible de définir avec un fichier .htaccess quel codage de caractère doit être utilisé pour chaque document type. La directive suivante ca­rac­té­rise le codage UTF-8 pour tous les documents :

# Définir le codage de caractères
AddDefaultCharset utf-8

Voici la directive à intégrer au cas où seuls quelques types de documents doivent être définis par codage :

# Définir le codage de caractères pour certains fichiers 
AddDefaultCharset utf-8 .css .htm .html .xhtml .php

Les astuces .htaccess : pratiques et simples à utiliser

Voici une partie de la longue liste d’astuces .htaccess possibles. Ces fichiers pratiques servent à con­fi­gu­rer les serveurs. Toutes les di­rec­tives sont di­rec­te­ment dirigées par le serveur Web sans né­ces­si­ter de re­dé­mar­rage complet.

Aller au menu principal