Bonjour à tous, 
Je vous retrouve aujourd'hui pour vous expliquer ce qu'est un fichier .htaccess, je vais résumer ses fonctionnalités et comment l'utiliser .
Qu'est-ce qu'un htaccess ?
Un .htaccess est un fichier qui sert à indiquer des commandes pour le serveur, c'est un fichier de configuration pour Apache.
Le .htaccess sert à sécuriser une page par mot de passe , à autoriser une adresse IP à consulter une page, à modifier vos pages d'erreurs , etc.
Comment fonctionne un htaccess ?
Un .htaccess doit être placé dans un répertoire sur votre serveur FTP , et celui-ci agit sur ce répertoire ainsi que tous les sous-répertoires qu'il contient.
Rien ne vous empêche de mettre d'autres htaccess sur d'autres répertoires par la suite.
Voici un schéma résumant ce que je viens d'expliquer :
Comme vous pouvez le constater, le .htaccess présent dans le répertoire www agit sur les répertoires js, php et html.
Le .htaccess présent dans js s’additionne au .htaccess présent dans le répertoire www. Mais si une instruction est écrite dans ce fichier, alors celle-ci ne s’exécute que dans le répertoire js.
Exemple d'utilisation basique
Le .htaccess situé dans www possède l'instruction suivante
Ce qui signifie que l'accès est interdit à tout le monde pour les répertoires www, js, php et html.
Mais le .htaccess situé dans le répertoire js possède l'instruction suivante
Ce qui signifie que le répertoire js est accessible à tous .
L'instruction DENY FROM ALL est donc redéfinie par ALLOW FROM ALL , et c'est cette instruction qui s'applique au répertoire js.
Comment protéger un répertoire avec un htaccess ?
Vous avez sans doute un répertoire avec des mots de passe , ou un répertoire où vous avez votre fichier de configuration MySQL , ces informations sont privées et si quelqu'un les avait entre les mains, votre site passerait un mauvais quart d'heure.
Nous allons donc utiliser plusieurs instructions pour sécuriser votre répertoire.
Vous devez indiquer le chemin complet du fichier de mots de passe (.htpasswd).
Pour connaître le chemin complet du répertoire dans lequel vous allez placer votre fichier .htpasswd, il va falloir faire un realpath. (cc @Fabien)
Créé donc un nouveau fichier , nommé "realpath.php" et dans ce fichier, vous allez y placer ce code :
La fonction realpath retourne le chemin absolu ainsi trouvé. Le résultat ne contient aucun lien symbolique, /./ ou /../.
Envoyez ce fichier sur votre serveur avec votre logiciel FTP (FileZila ..).
Placez-le dans le dossier que vous voulez protéger (dans mon exemple, ce sera www).
Ouvrez votre navigateur et allez voir ce fichier PHP : site.fr/realpath.php.
Il vous donne le chemin absolu, par exemple : /home/userftptest/www/realpath.php.
Copiez ce chemin dans votre .htaccess, et remplacez le "realpath.php" par ".htpasswd", ce qui nous donne au final par exemple : /home/userftptest/www/.htpasswd.
Vous pouvez donc supprimer ce fichier, nous n'en avons plus besoin.
Dans cet exemple, l'instruction pour AuthName est la suivante :
Pour entrer des combinaisons dans votre fichier .htpasswd, vous devez utiliser la forme suivante :
Le mot de passe doit être crypté dans le fichier .htpasswd, je vais vous présenter un site qui cryptera vos identifiants de façon automatique .
Vous avez à saisir vos vrais identifiants , puis à recopié le résultat obtenu dans votre fichier .htpasswd. (ceux-ci ne sont pas sauvegardés sur le site, rassurez-vous)
Vous pouvez également crypter vos mots de passe avec la fonction crypt en PHP.
N'oubliez pas d'envoyer ce fichier sur votre serveur !
Voici le code final :
Comment protéger un fichier avec un htaccess ?
C'est exactement le même principe qu'avec la protection d'un répertoire .
Il suffit d'utiliser les balises <Files></Files>.
Voici un exemple d'utilisation :
Les balises <Files></Files> permettent d'effectuer les instructions uniquement pour un seul fichier .
Cette balise n'accepte qu'un seul fichier , vous aurez donc le même nombre de balises que de fichiers : si vous mettez plusieurs fichiers dans la même balise, Apache retournera une erreur .
Comment personnaliser les erreurs avec un htaccess ?
Vous pouvez ajouté des pages d'erreurs personnalisées grâce au .htaccess, en particulier grâce à l'instruction ErrorDocument .
Cette instruction sert à dire que si l'erreur XXX intervient, alors on dirige le visiteur vers la page YYY.
Voici le code :
404, 403, 404, 500 sont les erreurs que vos visiteurs peuvent rencontrer.
/errors/404.php etc sont les pages d'erreurs personnalisés , évidemment celles-ci doivent exister.
Voici une liste des codes d'erreurs les plus fréquents ainsi que ce qu'ils signifient :
Comment modifier les redirections vers l'index du site ?
Lorsque vous saisissez une URL dans votre navigateur , celle-ci vous redirige vers index.php ou index.html.
Et bien, grâce au .htaccess, vous avez la possibilité de changer ceci. Plus précisément grâce à l'instruction DirectoryIndex .
Voici un exemple d'utilisation :
DirectoryIndex va chercher si le fichier index.php existe, si oui on l'affiche et tout se passe bien.
Dans le cas contraire, on va chercher le fichier index.html, si il existe on l'affiche, dans le cas contraire on affiche la page d'erreur 403 qui signifie que vous n'avez pas accès au contenu ciblé.
DirectoryIndex est utile pour ne pas afficher tout le contenu du dossier au visiteur.
Fonctionnalités avancées : AddType, ForceType et DefaultType
Ces 3 instructions reposent sur la notion de type MIME (Multipurpose Internet Mail Extensions).
Un type MIME est un standard utilisé pour définir la nature d'un document .
Par exemple, pour un fichier image.jpg, le type MIME est :
Le fichier "image.jpg" est donc une image, de type JPEG .
L'instruction AddType a pour fonction d'indiquer au navigateur comment interpréter un fichier dont l'extension est inconnue .
Par exemple, un fichier ayant l'extension .dwg, le navigateur ne sait pas a quoi correspond l'extension .dwg. On peut donc écrire dans le fichier .htaccess :
Le navigateur ouvrira donc le logiciel en association avec l'extension .dwg, en l'occurrence Autocad, si celui ci est installé sur l'ordinateur du visiteur. Dans le cas contraire le fichier sera ignoré.
Cette instruction peut également changer une action prédéfinie.
Par exemple :
Le navigateur interprétera le fichier html comme si c'était une image de type jpeg .
ForceType est similaire à l'instruction AddType sauf qu'elle agit sur tous les types de fichiers où se trouve le .htaccess.
Voici un exemple d'utilisation :
Tous les fichiers présents dans le répertoire www (si le .htaccess est dans celui-ci) seront considérés comme des images de type JPEG, peu importe leur extension.
DefaultType est tout simplement l'instruction destinée à définir l'action qui sera effectuée par le navigateur lorsque il rencontrera un fichier inconnu .
Dans cet exemple, tous les fichiers inconnus seront définis comme des fichiers HTML.
Comment faire un système de maintenance ?
Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! 
C'est très simple, une maintenance permet au webmaster de faire des modifications, et les autres visiteurs sont redirigés sur une page, mais ceux-ci n'ont pas accès au site durant la maintenance. Vous voyez où je veux en venir ?
On définie une erreur 403 , vu que le visiteur n'a pas la permission, à l'aide de l'instruction ErrorDocument.
On interdit l'accès pour tous les visiteurs, grâce à l'instruction DENY FROM ALL vue précédemment.
Mais il faut autorisé le webmaster à faire les modifications, donc on va autorisé son adresse IP avec l'instruction ALLOW FROM ....
Et pour finir, on affiche la page de maintenance (maintenance.html) pour tous les visiteurs à l'aide des balises <Files></Files> ainsi que l'instruction ALLOW FROM ALL !
N'oubliez pas d'envoyer ce fichier à la racine de votre site, et le tour est joué.
Evidemment cette méthode est longue et ennuyeuse, il faut toujours mettre à jour un fichier sur votre FTP alors que de paramétrer une page depuis votre site serait beaucoup plus simple, mais ce n'est pas l'objectif pour aujourd'hui.
Ce tutoriel touche à sa fin.
J'espère qu'il vous aura été utile, si vous avez des questions n'hésitez pas à répondre sur ce sujet.
Je vous retrouve aujourd'hui pour vous expliquer ce qu'est un fichier .htaccess, je vais résumer ses fonctionnalités et comment l'utiliser .
You must be registered for see images attach
Qu'est-ce qu'un htaccess ?
Le .htaccess sert à sécuriser une page par mot de passe , à autoriser une adresse IP à consulter une page, à modifier vos pages d'erreurs , etc.
You must be registered for see images attach
Comment fonctionne un htaccess ?
Rien ne vous empêche de mettre d'autres htaccess sur d'autres répertoires par la suite.
Voici un schéma résumant ce que je viens d'expliquer :
You must be registered for see images attach
Le .htaccess présent dans js s’additionne au .htaccess présent dans le répertoire www. Mais si une instruction est écrite dans ce fichier, alors celle-ci ne s’exécute que dans le répertoire js.
You must be registered for see images attach
Exemple d'utilisation basique
Code:
DENY FROM ALL
Ce qui signifie que l'accès est interdit à tout le monde pour les répertoires www, js, php et html.
Mais le .htaccess situé dans le répertoire js possède l'instruction suivante
Code:
ALLOW FROM ALL
Ce qui signifie que le répertoire js est accessible à tous .
L'instruction DENY FROM ALL est donc redéfinie par ALLOW FROM ALL , et c'est cette instruction qui s'applique au répertoire js.
You must be registered for see images attach
Comment protéger un répertoire avec un htaccess ?
Nous allons donc utiliser plusieurs instructions pour sécuriser votre répertoire.
- AuthUserFile /www/.htpasswd
Vous devez indiquer le chemin complet du fichier de mots de passe (.htpasswd).
Pour connaître le chemin complet du répertoire dans lequel vous allez placer votre fichier .htpasswd, il va falloir faire un realpath. (cc @Fabien)
Créé donc un nouveau fichier , nommé "realpath.php" et dans ce fichier, vous allez y placer ce code :
PHP:
<?php echo realpath('realpath.php'); ?>
La fonction realpath retourne le chemin absolu ainsi trouvé. Le résultat ne contient aucun lien symbolique, /./ ou /../.
Envoyez ce fichier sur votre serveur avec votre logiciel FTP (FileZila ..).
Placez-le dans le dossier que vous voulez protéger (dans mon exemple, ce sera www).
Ouvrez votre navigateur et allez voir ce fichier PHP : site.fr/realpath.php.
Il vous donne le chemin absolu, par exemple : /home/userftptest/www/realpath.php.
Copiez ce chemin dans votre .htaccess, et remplacez le "realpath.php" par ".htpasswd", ce qui nous donne au final par exemple : /home/userftptest/www/.htpasswd.
Vous pouvez donc supprimer ce fichier, nous n'en avons plus besoin.
- AuthName
You must be registered for see images attach
Code:
AuthName "Accès protégé REALITYGA"
- AuthType Basic
Pour entrer des combinaisons dans votre fichier .htpasswd, vous devez utiliser la forme suivante :
Code:
user:pass
Le mot de passe doit être crypté dans le fichier .htpasswd, je vais vous présenter un site qui cryptera vos identifiants de façon automatique .
Vous devez être inscrit pour voir les liens ! Inscrivez-vous ou connectez-vous ici.
Vous avez à saisir vos vrais identifiants , puis à recopié le résultat obtenu dans votre fichier .htpasswd. (ceux-ci ne sont pas sauvegardés sur le site, rassurez-vous)
Vous pouvez également crypter vos mots de passe avec la fonction crypt en PHP.
N'oubliez pas d'envoyer ce fichier sur votre serveur !
Voici le code final :
Code:
AuthUserFile /home/userftptest/www/.htpasswd
AuthName "Accès protégé REALITYGA"
AuthType Basic
Require valid-user
Vous avez la possibilité de nommé comme vous voulez le fichier .htpasswd, c'est juste que l'on appel communément ce fichier .htpasswd. Vous veillerez à changer le nom du fichier dans le .htaccess également. 
Un bon mot de passe fait minimum 16 caractères et est composé de chiffres, de lettres majuscules, de lettres minuscules ainsi que des caractères spéciaux. Plusieurs générateurs de mots de passe sont disponible en ligne.
Certains serveurs n'acceptent pas le cryptage, comme celui de Free. Dans ce cas là, vous êtes obligés de laisser le mot de passe tel quel dans votre fichier .htpasswd.
Pour les utilisateurs des serveurs Free, l'instruction AuthUserFile doit être remplacée par PerlSetVar AuthFile.
Un bon mot de passe fait minimum 16 caractères et est composé de chiffres, de lettres majuscules, de lettres minuscules ainsi que des caractères spéciaux. Plusieurs générateurs de mots de passe sont disponible en ligne.
Certains serveurs n'acceptent pas le cryptage, comme celui de Free. Dans ce cas là, vous êtes obligés de laisser le mot de passe tel quel dans votre fichier .htpasswd.
Pour les utilisateurs des serveurs Free, l'instruction AuthUserFile doit être remplacée par PerlSetVar AuthFile.
You must be registered for see images attach
Comment protéger un fichier avec un htaccess ?
Il suffit d'utiliser les balises <Files></Files>.
Voici un exemple d'utilisation :
Code:
<Files test.php>
AuthUserFile /home/userftptest/www/.htpasswd
AuthName "Accès protégé REALITYGA"
AuthType Basic
Require valid-user
</Files>
Les balises <Files></Files> permettent d'effectuer les instructions uniquement pour un seul fichier .
Cette balise n'accepte qu'un seul fichier , vous aurez donc le même nombre de balises que de fichiers : si vous mettez plusieurs fichiers dans la même balise, Apache retournera une erreur .
Pour Apache 1.3 et version supérieur, il est recommandé d'utiliser la balise <FilesMatch> au lieu de <Files>.
You must be registered for see images attach
Comment personnaliser les erreurs avec un htaccess ?
Cette instruction sert à dire que si l'erreur XXX intervient, alors on dirige le visiteur vers la page YYY.
Voici le code :
Code:
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
404, 403, 404, 500 sont les erreurs que vos visiteurs peuvent rencontrer.
/errors/404.php etc sont les pages d'erreurs personnalisés , évidemment celles-ci doivent exister.
Voici une liste des codes d'erreurs les plus fréquents ainsi que ce qu'ils signifient :
- 400 : Bad Request : la syntaxe de la requête est mal formulée.
- 401 : Unhautorized : l'utilisateur n'a pas entré le bon mot de passe pour accéder au contenu.
- 403 : Forbidden : l'accès au contenu est interdit.
- 404 : Not Found : le document n'a pas été trouvé.
- 500 : Internal Server Error: le serveur a rencontré une erreur interne (erreur de script ou erreur passagère).
- 503 : Service Unvailable: le serveur ne peut pas répondre à cause d'une surcharge de trafic (trop de visiteurs).
Vous devez être inscrit pour voir les liens ! Inscrivez-vous ou connectez-vous ici.
.
You must be registered for see images attach
Comment modifier les redirections vers l'index du site ?
Et bien, grâce au .htaccess, vous avez la possibilité de changer ceci. Plus précisément grâce à l'instruction DirectoryIndex .
Voici un exemple d'utilisation :
Code:
DirectoryIndex index.php index.html /erreurs/erreur_403.php
DirectoryIndex va chercher si le fichier index.php existe, si oui on l'affiche et tout se passe bien.
Dans le cas contraire, on va chercher le fichier index.html, si il existe on l'affiche, dans le cas contraire on affiche la page d'erreur 403 qui signifie que vous n'avez pas accès au contenu ciblé.
DirectoryIndex est utile pour ne pas afficher tout le contenu du dossier au visiteur.
You must be registered for see images attach
Fonctionnalités avancées : AddType, ForceType et DefaultType
Un type MIME est un standard utilisé pour définir la nature d'un document .
Par exemple, pour un fichier image.jpg, le type MIME est :
Code:
Content-type: image/jpeg
Le fichier "image.jpg" est donc une image, de type JPEG .
L'instruction AddType a pour fonction d'indiquer au navigateur comment interpréter un fichier dont l'extension est inconnue .
Par exemple, un fichier ayant l'extension .dwg, le navigateur ne sait pas a quoi correspond l'extension .dwg. On peut donc écrire dans le fichier .htaccess :
Code:
AddType application/acad dwg
Le navigateur ouvrira donc le logiciel en association avec l'extension .dwg, en l'occurrence Autocad, si celui ci est installé sur l'ordinateur du visiteur. Dans le cas contraire le fichier sera ignoré.
Cette instruction peut également changer une action prédéfinie.
Par exemple :
Code:
AddType image/jpeg .html
Le navigateur interprétera le fichier html comme si c'était une image de type jpeg .
ForceType est similaire à l'instruction AddType sauf qu'elle agit sur tous les types de fichiers où se trouve le .htaccess.
Voici un exemple d'utilisation :
Code:
ForceType image/jpeg
Tous les fichiers présents dans le répertoire www (si le .htaccess est dans celui-ci) seront considérés comme des images de type JPEG, peu importe leur extension.
DefaultType est tout simplement l'instruction destinée à définir l'action qui sera effectuée par le navigateur lorsque il rencontrera un fichier inconnu .
Dans cet exemple, tous les fichiers inconnus seront définis comme des fichiers HTML.
Code:
DefaultType text/html
You must be registered for see images attach
Comment faire un système de maintenance ?

C'est très simple, une maintenance permet au webmaster de faire des modifications, et les autres visiteurs sont redirigés sur une page, mais ceux-ci n'ont pas accès au site durant la maintenance. Vous voyez où je veux en venir ?

On définie une erreur 403 , vu que le visiteur n'a pas la permission, à l'aide de l'instruction ErrorDocument.
Code:
ErrorDocument 403 /maintenance.html
On interdit l'accès pour tous les visiteurs, grâce à l'instruction DENY FROM ALL vue précédemment.
Code:
DENY FROM ALL
Mais il faut autorisé le webmaster à faire les modifications, donc on va autorisé son adresse IP avec l'instruction ALLOW FROM ....
Code:
ALLOW FROM xx.xxx.xxx.xxx
Et pour finir, on affiche la page de maintenance (maintenance.html) pour tous les visiteurs à l'aide des balises <Files></Files> ainsi que l'instruction ALLOW FROM ALL !
Code:
<Files maintenance.html>
ALLOW FROM ALL
</Files>
N'oubliez pas d'envoyer ce fichier à la racine de votre site, et le tour est joué.
Evidemment cette méthode est longue et ennuyeuse, il faut toujours mettre à jour un fichier sur votre FTP alors que de paramétrer une page depuis votre site serait beaucoup plus simple, mais ce n'est pas l'objectif pour aujourd'hui.
You must be registered for see images attach
J'espère qu'il vous aura été utile, si vous avez des questions n'hésitez pas à répondre sur ce sujet.
Quelques informations sont tirées de Google
