Tout savoir sur le .htaccess et ses fonctionnalités

Snake's

Administrateur
Ancien staff
Inscription
5 Juin 2012
Messages
8 792
Réactions
6 916
Points
29 965
RGCoins
25
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:
Franchement trés lourd et bien redigé. J'pensais que t'allais parler de l'URL rewrite fin bon c'est deja trés complet. Sinon saurais tu comment interdire l'accès direct à in fichier "site.fr/privee/" mais pouvoir utiliser les ressources à l'intérieur ?
 
GG j'ai apris des choses :)
 
Bravo très bien rédigé ;)
 
Super tuto, tu devrais ajouter en haut de ton tutoriel, un [tab] avec :
  • Temps de rédaction
  • Temps de lecture estimé
  • Difficultée
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:
Très bien rédigé :ok: j'était moi même entrain de le rédigé :mdr:
 
Tu aurais du parler de CrawlProtect, sinon bien rédigé ... gg
 
Très beau topic :love:
 
Bon début de tuto.. il manque cependant quelques trucs intéressants et utiles.

Code:
<IfModule nom_du_module></IfModule>
Header 
AddDefaultCharset 
Options 
RewriteEngine
RewriteBase
RewriteCond
RewriteRule

@+
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:

Merci pour cette énorme topic, je cherchais comment fonctionnais en clair le htaccess, maintenant je sais :p
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:
GG <3
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:

Gros merci mec, franchement !

J'ai jamais su comment mettre un MDP sur un htaccess, franchement merci !! :coeur:
 
Bonjour à tous, :membre:

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 ?

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.


You must be registered for see images attach



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 :

You must be registered for see images attach

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.


You must be registered for see images attach



Exemple d'utilisation basique

Le .htaccess situé dans www possède l'instruction suivante
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 ?

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.
  • AuthUserFile /www/.htpasswd
C'est l'instruction pour indiquer le chemin du fichier qui contient les mots de passe (.htpasswd, nous y viendrons plus tard).
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
Cette instruction sert à définir le texte qui invitera la personne à entrer ses identifiants.


You must be registered for see images attach
Dans cet exemple, l'instruction pour AuthName est la suivante :
Code:
AuthName "Accès protégé REALITYGA"

  • AuthType Basic
AuthType Basic indique qu'il faut utiliser AuthUserFile pour vérifier les mots de passe qui sont saisis dans le fichier .htpasswd.
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 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.

You must be registered for see images attach



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 :
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 ?

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 :
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 avez une liste complète à .


You must be registered for see images attach



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 :
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

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 :
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 ?

Avec tout ce que vous venez d'apprendre, vous avez de quoi faire un système de maintenance dans votre fichier .htaccess ! :p
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 ? :espion:

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

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. ;)

Quelques informations sont tirées de Google
:tchuss:
:ok:
 
Et si tu utilise nginx, c'est le drame :>
 
Salut,

Merci juste pas très pratique comme tu dis pour la maintenance comme cela bloque le CSS, JS sur notre site.
 
Retour
Haut