Les fichiers .htaccess sont des fichiers de configuration d’Apache, permettant de définir des règles dans un répertoire et dans tous ses sous-répertoires (qui n’ont pas de tel fichier à l’intérieur). On peut les utiliser pour protéger un répertoire par mot de passe, ou pour changer le nom ou l’extension de la page index, ou encore pour interdire l’accès au répertoire.
Les fichiers .htaccess peuvent être utilisés dans n’importe quel répertoire virtuel ou sous-répertoire.
Les principales raisons d’utilisation des fichiers .htaccess sont :
- Gérer l’accès à certains fichiers.
- Ajouter un mime-type.
- Protéger l’accès à un répertoire par un mot de passe.
- Protéger l’accès à un fichier par un mot de passe.
- Définir des pages d’erreurs personnalisées.
Sécurité et restrictions
Les fichiers .htaccess permettent à un utilisateur ayant la possibilité de déposer des fichiers sur le site web de surcharger la configuration du serveur. L’administrateur d’un serveur Apache restreint donc en général l’utilisation des fichiers .htaccess à quelques directives particulières grâce à la directive AllowOverride.
L’utilisation des fichiers .htaccess a également un coût en matière de performance, car le serveur web doit vérifier la présence d’un tel fichier à chaque requête avant de la traiter.
Protéger un répertoire
Les fonctions de gestion d’accès à des répertoires ou des fichiers sont les plus couramment utilisées avec celle de gestion des pages d’erreurs.
Il faut dans un premier temps indiquer dans le fichier ".htaccess" les consignes de l’authentification.
Code:
AuthUserFile /etc/apache2/.htpasswd
AuthName "Accès à la zone protégée"
AuthType Basic
<LIMIT GET POST>
Require valid-user
</LIMIT>
- AuthUserFile (et son équivalent pour les groupes AuthGroupFile) indique l’emplacement du fichier de mot de passe souvent ".htpasswd".
- AuthName est le nom de la fenêtre d’identification.
- Require permet d’indiquer les utilisateurs ou groupes d’utilisateurs ayant accès à la zone restreinte. Vous pouvez y indiquer "valid-user" pour n’importe quel utilisateur.
Le fichier de mot de passe ".htpasswd" contient un ou plusieurs mots de passe par rapport à un utilisateur. Les mots de passe sont chiffrés.
Afin de chiffer le mot de passe, vous devez utiliser la commande htpasswd. Lors de la première utilisation de htpasswd, vous devez indiquer le chemin du fichier de mot de passe à créer (ici /etc/apache2/.htpasswd). Ceci peux se faire via le commutateur "-c"
la structure de la commande est donc "htpasswd -c /etc/apache2/.htpasswd user"
Exemple :
sudo htpasswd -c /etc/apache2/.htpasswd joe
Maintenant que le fichier /etc/apache2/.htpasswd est créé, on peut ajouter autant d’utilisateurs qu’on le souhaite. Cette fois le commutateur "-c" est inutile.
sudo htpasswd /etc/apache2/.htpasswd toto
NOTE : N’oubliez pas que lors de l’utilisation de la commande "sudo", le premier mot de passe demandé est celui de l’utilisateur-administrateur (petite particularité de la distribution Ubuntu).
Si vous placez votre fichier ".htpasswd" dans un répertoire sous la racine de votre serveur web, il est impératif de le protéger des accès non autorisés. Il est donc impératif de créer un fichier .htaccess contenant ces directives
Code:
AuthGroupFile /dev/null
AuthName "Acces restreint"
AuthType Basic
deny from all
URL Rewritting
Les fichiers .htaccess permettent également de réécrire les urls afin de les simplifier. Par exemple si vous avez une URL du type :
http://www.mon-site.com/viewtopic.php?order=0&start=1256\&message=50
vous pouvez la transformer en :
http://www.mon-site.com/topic-1256-50.html
vous suposez alors que 0 est par defaut. Dans le .htaccess vous aurez :
Code:
RewriteEngine on
RewriteRule ^topic-([0-9]+)-([0-9]+).html$ viewtopic.php?order=0&start=$1&message=$2 [L]
Gérer les redirections
Comme avec les redirections sur les erreurs, les ".htaccess" permettent de rediriger cette fois des pages ; une fonction utile, par exemple, pour une page qui a changé d’adresse.
Déplacer une page
RedirectPermanent page_a_rediriger.php http://www.example.com/nouvelle_page.php}
Déplacer un répertoire
RedirectPermanent /ancien_repertoire http://www.example.com/nouveau_repertoire/
Rediriger un domaine
RedirectPermanent / http://www.example.com
Ces manipulations sont importantes en cas de changement d’adresse de site, de changement de répertoire, ou de nom de page surtout au niveau du référencement avec le PageRank.
La navigation dans les répertoires
Lorsqu’un répertoire ne contient pas de fichiers "index", le serveur envoie la liste des fichiers contenus dans ce répertoire, vous pouvez modifier des options pour personnaliser l’affichage.
Changer l’index du répertoire
Avec la fonction "DirectoryIndex", il est possible de rediriger la requête vers une ou plusieurs pages lorsque l’on pointe sur un répertoire directement. Exemple :
DirectoryIndex index.php redirection1.php http://www.example.com/erreurs/erreur_404.php
Dans cet exemple, la fonction DirectoryIndex nous permet de ne pas afficher la liste du répertoire, mais de rediriger successivement vers les pages "index.php", "redirection1.php" ou si ces deux dernières n’existent pas, vers la page d’erreur 404 (ou autre).
Modifier l’apparence de la liste de fichiers
Lorsque vous avez accès à la liste des fichiers d’un répertoire, vous pouvez lire un certain nombre d’informations sur ces fichiers, comme la date de modification, la taille, la description,etc.
Vous pouvez modifier l’affichage de ces informations pour éviter de créer une page.
Avec la fonction IndexOptions FancyIndexing, vous pouvez utiliser :
- IconsAreLinks : Les icônes en face du type de deviennent des liens,
- ScanHTMLTitles : Extrait le titre des documents HTML et remplace la description des fichiers.
- SuppressSize : Supprime la taille des fichiers,
- SuppressDescription : Supprime la description des fichiers,
- SuppressLastModified : Supprime la date de la dernière modification.
La personnalisation de cette liste de fichiers peut aller plus loin également avec les fonctions suivantes :
- AddDescription "Fichier RAR, à télécharger" *.rar : ajoute la description entre guillemets aux fichiers dont l’extension est ".rar",
- AddIcon http://www.example.com/images/icone_rar.png rar : ajoute l’icône pour l’extension ".rar",
- HeaderName example.html : Permet de personnaliser l’entête de la page de listing avec la page "example.html".
////////////////////////////////////////////
L'ensemble de ce site est placé sous license GNU FDL et CC BY-SA
Auteur : Frédéric Bouby