[DOC] Le htaccess

1) Definition
2) Comment créer un fichier .htaccess
3) Comment se compose un fichier .htaccess
4) Les options Order, Deny et Allow.
5) Le fichier .htpasswd
6) Personnaliser les pages d'erreurs
7) Changer le fichier index par défaut.
8) Redirection permanente
- Les fichiers .htaccess sont des fichiers de configuration des serveurs web Apache. Ils peuvent être placés dans n'importe quel répertoire du site web (la configuration s'applique au répertoire et à tous les répertoires qu'il contient, qui n'ont pas de tel fichier à l'intérieur) et peuvent être modifiés alors que le serveur est en cours d'exécution.
Ont peut les utiliser pour protéger un répertoire, créer des redirections ou écrire des messages d'erreurs personnalisé par exemple.
2) Comment créer un fichier .htaccess
- Sous windows, il n'est pas possible de créer un fichier avec un nom commençant par un point.
Il faut donc créer un fichier que vous appellerez par exemple txt.htaccess
Puis il suffira via ftp de l'envoyer sur votre serveur et de supprimer le txt pour avoir un fichier .htaccess
3) Comment se compose un fichier .htaccess
- Voici un exemple de fichier .htaccess
- Code: Tout sélectionner
AuthUserFile /mon_répertoire_protégé/.htpasswd
AuthGroupFile /mon_répertoire/fichier_de_groupe
AuthName "Zone réservée"
AuthType Basic
require valid-user- Code: Tout sélectionner
<Files secret.html>
require valid-user
</Files>
Vous voyez donc qu'il y a deux parties.
La première partie indique:
- le chemin ou se trouve le fichier de mots de passe (nous verrons un peu plus loin comment le générer point 5)
- le fichier de groupe (si il existe)
- le nom de l'authentification, qui permet d'afficher par exemple "« Tapez votre nom d'utilisateur et votre mot de passe. Domaine: "Zone réservée" »
- enfin le type de l'authentification
La deuxième partie est quand à elle la zone ou l'on défini qui peut accéder à quoi.
Ici seul les utilisateurs "valid" c'est à dire authentifiés à partir du fichier .htpasswd auront accès au répertoire ou se trouve le .htaccess
Vous pouvez aussi interdire l'accès à certains fichiers dans cette deuxième partie.
Imaginons que vous ayez un fichier appelé secret.html
Pour protéger son accès certains visiteurs, alors vous mettrez dans votre deuxième partie ceci:
4) Les options Order, Deny et Allow.
- Order permet de spécifier un ordre d'évaluation des options Allow et Deny.
- Code: Tout sélectionner
Order allow,deny
Deny from all
Allow from all- Code: Tout sélectionner
Order deny,allow
Deny from all
Allow from all
Allow permet d'autoriser l'accès et Deny d'interdire l'accès et ce en fonction des conditions données.
Suivant l'ordre dans lequel sont placé ces options, les autorisations diffères :
- Allow,Deny Autorise tout le monde sauf les IP décrites dans Deny from
- Deny,Allow Rejette tout le monde sauf les IP listés dans Allow from
Dans l'ordre Allow,Deny, les directives Allow sont évaluées avant celles de la clause Deny. Le défaut est d'interdire l'accès. Tout client qui ne correspond pas à la directive d'autorisation ou qui satisfait au test de déni se verra refusé l'accès au serveur web.
Dans l'ordre Deny,Allow, les directives Deny sont évaluées avant celles de la clause Allow. Le défaut est d'autoriser l'accès. Tout client qui ne correspond pas à la directive de déni ou qui satisfait au test d'autorisation spécifique Allow se verra autorisé l'accès au serveur web.
Je sais que ce point peut paraitre un peu obscure, donc prenons un exemple simple avec la condition "all" (tout le monde)
Dans ce premier cas, le visiteur est refusé:
En effet, on peut traduire par:
"J'autorise tout le monde (allow all) sauf tout le monde (deny all)"
Par contre ici, le visiteur est autorisé:
Ici le code se traduit par:
"J'interdis tout le monde (deny all) sauf tout le monde (allow all)"
5) Le fichier .htpasswd
- Ce fichier contient les clients et les mots de passe.
- Code: Tout sélectionner
toto:$apr1$s4OY9b87$g.vOpifObnyVXMM18XIpb.
paul:$apr1$RESdgYZG$Zdpl81Ov6Zr7/TXJFkVqC/- Code: Tout sélectionner
AuthName "Acces interdit"
AuthType Basic
deny from all
il se présente sous cette forme:
qui correspond à login:password
Ce fichier comprend un compte par ligne.
Si nous prenons la première ligne, le compte du membre est toto puis après les : il y a le mot de passe qui à été crypté en md5. Vous trouverez sur le net de nombreux site ou programme permettant d'encoder un mot de passe en MD5. Notez aussi qu'il existe d'autre algorithme de cryptage (DES, SHA).
Ce fichier est à placer dans un répertoire sécurisé, et vous indiquez son nom au début de votre htaccess, comme nous l'avons vu au point 3. Pensez aussi à protéger le répertoire ou se trouve les mot de passe avec un htaccess contenant un deny all, pour éviter tout accès à cette page.
exemple:
6) Personnaliser les pages d'erreurs
- htaccess, permet aussi de personnaliser vos pages d'erreurs.
- Code: Tout sélectionner
ErrorDocument 404 /mapage_404.html
Par exemple, avec une erreur 404 (fichier introuvable), au lieu d'avoir une page blanche avec un "not found, ....", il suffit de créer un page que l'on appellera mapage_404.html, que vous personnaliserez.
En cas d'erreur 404, il suffira de placer dans votre htaccess ce code:
Ainsi en cas d'erreur, vos visiteurs seront redirigé vers une page pouvant etre plus explicite.
7) Changer le fichier index par défaut.
- Le fichier d'index est le fichier lancé par défaut si rien n'est précisé dans l'url.
- Code: Tout sélectionner
DirectoryIndex accueil.html index.html index.htm
Si vous allez sur
sans rien préciser de plus, c'est la page index.html ou index.htm qui sera recherché.www.monsite.com
Si vous décidez que la première page qui doit s'ouvrir s'appellera accueil.html, alors vous pouvez changer cet ordre comme ceci:
8) Redirection permanente
- Les redirections permanente permettent de rediriger un visiteur vers une page précise.
- Code: Tout sélectionner
Redirect permanent /doc http://www.mon_site.com/tutoriels
Imaginons, que vous ayez restructuré votre site et que donc certaines page ne soient plus accessible.
Prenons l'exemple d'un répertoire que vous avez appelé "doc" contenant des tutoriels. Pour plus de lisibilité, vous décidez de renommer ce répertoire /doc en /tutoriels
Mais si les visiteurs l'avez l'habitude d'aller dans le répertoire /doc, ils auront une page d'erreur indiquant que la page n'existe pas.
Pour cela nous allons faire une redirection permanente de /doc vers /tutoriels