Dix astuces .htaccess que tout le monde devrait connaître
Les fichiers de configuration .htaccess (en français : accès hypertexte) permettent aux Webmasters de paramétrer leurs règles relatives aux répertoires de leurs sites sur des serveurs NCSA tels que le HTTP d’Apache. Ces fichiers définissent par exemple quels utilisateurs ont le droit d’accès à certaines données. Un autre exemple typique d’astuce .htaccess serait la mise en place d’une redirection automatique.
C’est quoi exactement un fichier .htaccess?
Le terme .htaccess désigne un fichier texte dont l’utilisateur ayant les droits d’administration se sert pour configurer un serveur Web compatible à NCSA. Cette technique a été inventée dans les années 90 pour le serveur Web NCSA HTTPD, très innovant pour l’époque. Actuellement, elle intervient avant tout sur le serveur HTTP Apache dont l’exploitation est gérée par plusieurs fichiers centraux, les « httpd.conf ». Ces données de configuration supérieures sont enregistrées en règle générale dans un répertoire du programme du serveur Web et définis par l’administrateur du serveur. Ils déterminent si un utilisateur a le droit de modifier la configuration du serveur grâce à des astuces .htaccess. Si oui, celui-ci peut alors créer et modifier des fichiers .htaccess pour chaque nouveau répertoire et écraser quelques parties de la configuration via des répertoires de niveau supérieur.
A chaque consultation de page, le serveur Web scanne la totalité de ces répertoires supérieurs sans en sauvegarder les informations (le .htaccess d’un sous répertoire é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épertoire approprié, sans nécessiter de redémarrer le serveur. L’écriture ne doit comporter aucune erreur car elle pourrait empêcher l’accès à tout le serveur. L’application 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 disponibles sur le serveur Web. Les serveurs Telnet ou SSH proposent de le créer et de le modifier directement sur la plateforme serveur. Si vous n'avez qu’un accès FTP à disposition, le fichier devra alors être créé localement et ensuite être téléchargé. Si le nom commence par un point, c’est qu’il s’agit d’un fichier de répertoire de système Unix. Celui-ci sera alors considéré comme « caché » et apparaîtra invisible lors de l’utilisation 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 rapidement. Ainsi, l’éditeur n’attachera pas l’extension .txt si le fichier est enregistré sous « tout fichier ». Si le fichier .htaccess contient la bonne directive, il sera expédié dans le bon répertoire et sera tout de suite valide. Cela concerne aussi tout le sous-répertoire.
Configurer un serveur via une astuce .htaccess
Les utilisateurs autorisés par les administrateurs ont la possibilité via les fichiers .htaccess d’influencer rapidement la configuration de serveurs Web. Ils peuvent par exemple protéger des répertoires entiers d’accès illégaux via une authentification HTTP. Par ailleurs, des pages d’erreurs ou de redirection peuvent s’afficher. Il existe un certain nombre de conseils avec .htaccess. En voici les dix principaux.
1. Les pages d’erreur personnalisables
Les serveurs Web peuvent afficher par défaut des fichiers HTML standards voire des avertissements 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 utilisateurs. Il est possible avec le fichier .htaccess de créer des pages personnalisé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épertoire racine ou d’une URL externe, l’URL complète peut aussi être incorporée dans le .htaccess qui se trouve dans ce cas dans le répertoire racine :
# Votre message d’erreur de l’emplacement externe
ErrorDocument 404 / http://www.nom-de-votre-site.com/erreur/404.html
2. Redirection
Une des possibilités d’action des fichiers .htaccess est de rediriger les utilisateurs vers d’autres pages. Vous pouvez par exemple transfé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 enregistré dans le répertoire racine et veille à ce que les demandes au domaine premier soient redirigées vers le nouveau :
# Redirection simple
Redirect / http://www.nouveau-domaine.fr/
Les données uniques peuvent être transfé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. Protection par mot de passe
Vous ne souhaitez pas écrire de scripts trop compliqués avec PHP mais vous avez besoin d’un répertoire 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éficier de cette protection de mots de passe, il vous faudra un deuxième fichier avec le nom .htpasswd dans lequel les mots de passe seront enregistrés. Ceux-ci peuvent être encodés sous le système Unix, il existe pour cela différents générateurs de .htpasswd sur la Toile. Ces répertoires 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 utilisateurs :
# 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épertoire racine, le .htaccess doit se trouver dans le celui qui est protégé.
4. Augmenter la mémoire PHP
L’utilisation d’applications 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 garantissant à une poignée. Ainsi, l’offre Internet peut être mise à la disposition de seulement quelques employés sur l’intranet d’une entreprise. La directive suivante résume certaines des limitations 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’interprétation des données, le sens n’est donc pas important. Les autres entrées communiquent au serveur que tous les utilisateurs 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’utilisateur de l’adresse IP 192.168.220.102.
7. Rediriger sa présence sur le Web de HTTP à HTTPS
Si vous utilisez un certificat 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 navigateur
Grâce à cette directive, vous pouvez afficher le contenu du répertoire et proposer à d’autres utilisateurs de le télécharger :
# Montrez le contenu du répertoire
Options +Indexes
9. Interdire le Hotlinking d’images
Le Hotlinking 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’enregistrer sur son propre serveur. Cela entraîne une augmentation du volume de données sur le site d’origine, sans que son propriétaire ne puisse l’influencer. 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 caractè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 caracté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 à configurer les serveurs. Toutes les directives sont directement dirigées par le serveur Web sans nécessiter de redémarrage complet.