Page 1 sur 1

[DOC] Le htaccess

MessagePosté: Mar 13 Juil 2010 10:20
par lolovoisin
1) Definition
    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


    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:
    Code: Tout sélectionner
    <Files secret.html>
    require valid-user
    </Files>

4) Les options Order, Deny et Allow.
    Order permet de spécifier un ordre d'évaluation des options Allow et Deny.
    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é:
    Code: Tout sélectionner
    Order allow,deny
    Deny from all
    Allow from all

    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é:
    Code: Tout sélectionner
    Order deny,allow
    Deny from all
    Allow from all

    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.
    il se présente sous cette forme:
    Code: Tout sélectionner
    toto:$apr1$s4OY9b87$g.vOpifObnyVXMM18XIpb.
    paul:$apr1$RESdgYZG$Zdpl81Ov6Zr7/TXJFkVqC/

    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:
    Code: Tout sélectionner
    AuthName "Acces interdit"
    AuthType Basic

    deny from all

6) Personnaliser les pages d'erreurs
    htaccess, permet aussi de personnaliser vos pages d'erreurs.
    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:
    Code: Tout sélectionner
    ErrorDocument  404  /mapage_404.html


    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.
    Si vous allez sur
    www.monsite.com
    sans rien préciser de plus, c'est la page index.html ou index.htm qui sera recherché.
    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:
    Code: Tout sélectionner
    DirectoryIndex accueil.html index.html index.htm

8) Redirection permanente
    Les redirections permanente permettent de rediriger un visiteur vers une page précise.
    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
    Code: Tout sélectionner
    Redirect permanent /doc http://www.mon_site.com/tutoriels