Différences
Ci-dessous, les différences entre deux révisions de la page.
Révision précédente | |||
htaccess [2018/06/04 17:00] 127.0.0.1 modification externe |
htaccess [2019/08/13 12:40] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Le fichier .htaccess ====== | ||
- | ===== Introduction ===== | ||
- | |||
- | Les fichiers .htaccess sont des fichiers de configuration d' | ||
- | |||
- | ===== Intérêt des fichiers htaccess ===== | ||
- | |||
- | Les fichiers .htaccess peuvent être utilisés dans n' | ||
- | |||
- | Les principales raisons d' | ||
- | |||
- | * Gérer l' | ||
- | * Ajouter un mime-type. | ||
- | * Protéger l' | ||
- | * Protéger l' | ||
- | * Définir des pages d' | ||
- | |||
- | ===== Principe des fichiers htaccess ===== | ||
- | |||
- | Le fichier .htaccess est placé dans le répertoire dans lequel il doit agir. Il agit ainsi sur les permissions du répertoire qui le contient et de tous ses sous-répertoires. Vous pouvez placer un autre fichier .htaccess dans un sous-répertoire d'un répertoire déjà contrôlé par un fichier .htaccess. | ||
- | |||
- | Le fichier .htaccess du répertoire parent reste en « activité » tant que les fonctionnalités n'ont pas été réécrites. | ||
- | |||
- | Les fonctionnalités de ces fichiers étant très puissantes, lisez bien ce tutorial avant de vous lancer dans la création des vôtres. | ||
- | |||
- | Sous Windows, il est logiquement impossible de créer un fichier .htaccess, puisque Windows ne vous autorisera pas à sauvegarder le fichier tel quel. Voici la démarche à suivre : | ||
- | |||
- | - Créer un fichier texte « fichier.htaccess » | ||
- | - Renommer le fichier en supprimant « fichier » | ||
- | |||
- | Remarque : Selon votre éditeur, vous pouvez également sauvegarder le fichier directement en .htaccess. Sous Notepad, il suffit de mettre des guillemets autour du nom de fichier tandis que UltraEdit gère le nom lui-même. | ||
- | |||
- | ===== Écrire correctement le chemin d' | ||
- | |||
- | Chez FranceServ Hébergement, | ||
- | |||
- | Le chemin est constitué de / | ||
- | |||
- | Exemple pour l' | ||
- | |||
- | / | ||
- | |||
- | ===== Empêcher l' | ||
- | |||
- | Un fichier .htaccess est composé de deux sections : | ||
- | |||
- | * Une première section contient les chemins vers les fichiers contenant les définitions de groupes et d' | ||
- | |||
- | AuthUserFile / | ||
- | AuthGroupFile / | ||
- | AuthName " | ||
- | AuthType Basic | ||
- | |||
- | * AuthUserFile définit le chemin d' | ||
- | * AuthGroupFile définit le chemin d' | ||
- | * AuthName entraîne l' | ||
- | * AuthType Basic précise qu'il faut utiliser AuthUserFile pour l' | ||
- | |||
- | * Une seconde section contient la définition des conditions d' | ||
- | |||
- | <Limit GET POST> | ||
- | Require valid-user | ||
- | {instruction d' | ||
- | </ | ||
- | |||
- | * La balise LIMIT possède en attribut la valeur GET (en majuscule) et/ou la valeur POST, afin de définir le type de méthode du protocole HTTP auxquelles la restriction s' | ||
- | * require valid-user précise que l'on autorise uniquement les personnes identifiées. Il est également possible de préciser explicitement le nom des personnes autorisées à s' | ||
- | |||
- | ===== Protéger un répertoire par un mot de passe ===== | ||
- | |||
- | Il s'agit d'une des applications les plus utiles du fichier .htaccess car elle permet de définir de façon sûre (à l'aide d'un login et d'un mot de passe) les droits d' | ||
- | |||
- | La syntaxe est la suivante : | ||
- | |||
- | AuthUserFile {emplacement du fichier de mot de passe} | ||
- | AuthGroupFile {emplacement du fichier de groupe} | ||
- | AuthName " | ||
- | AuthType Basic | ||
- | Require valid-user | ||
- | |||
- | La commande AuthUserFile permet de définir l' | ||
- | |||
- | La commande AuthGroupFile permet de définir l' | ||
- | |||
- | Pour information, | ||
- | |||
- | Voici un exemple de fichier .htaccess : | ||
- | |||
- | L' | ||
- | |||
- | ErrorDocument 403 http:// | ||
- | AuthUserFile / | ||
- | AuthGroupFile /dev/null | ||
- | AuthName " | ||
- | AuthType Basic | ||
- | Require valid-user | ||
- | |||
- | Le fichier de mot de passe est un fichier texte devant contenir sur chacune des ses lignes le nom de chaque utilisateur suivi des deux points (:), puis du mot de passe crypté. | ||
- | |||
- | Voici un exemple de fichier contenant des mots de passe cryptés (ici .htpasswd) : | ||
- | |||
- | JFPillou: | ||
- | Damien: | ||
- | Comma: | ||
- | |||
- | .htpasswd est un simple fichier texte contenant les noms des utilisateurs suivis d'un : puis du mot de passe crypté de cet utilisateur. | ||
- | |||
- | Ce fichier de mot de passe ne devrait pas être mis dans un répertoire accessible au public. Pourquoi ne pas le placer dans un autre dossier avec un .htaccess qui bloque intégralement son accès dans ce même dossier. | ||
- | |||
- | ===== Crypter les mots de passe ===== | ||
- | |||
- | Voici un petit utilitaire vous permettant de crypter vos mots de passe en ligne : | ||
- | |||
- | Dans un fichier php nommée par exemple " | ||
- | <p> | ||
- | <?php | ||
- | if (isset($_POST[' | ||
- | { | ||
- | $login = $_POST[' | ||
- | $pass_crypte = crypt($_POST[' | ||
- | | ||
- | echo 'Ligne & | ||
- | } | ||
- | | ||
- | else // On n'a pas encore rempli le formulaire | ||
- | { | ||
- | ?> | ||
- | </p> | ||
- | | ||
- | < | ||
- | | ||
- | <form method=" | ||
- | <p> | ||
- | Login : <input type=" | ||
- | Mot de passe : <input type=" | ||
- | | ||
- | <input type=" | ||
- | </p> | ||
- | </ | ||
- | | ||
- | <?php | ||
- | } | ||
- | ?> | ||
- | source : http:// | ||
- | Un utilitaire est également proposé à cette adresse : http:// | ||
- | |||
- | ===== Empêcher l' | ||
- | |||
- | La syntaxe pour bloquer l' | ||
- | |||
- | Allow (all, [liste de domaine]) | ||
- | Deny (all, [liste de domaine]) | ||
- | Order (Allow,Deny ou Deny,Allow) | ||
- | |||
- | Order Deny, Allow | ||
- | Deny from .LeNomDuDomaine.com | ||
- | |||
- | Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux ressources comprises dans le répertoire et ses sous-répertoires. La commande Order sert à préciser explicitement que la commande Deny va bien annuler l' | ||
- | |||
- | ===== Empêcher l' | ||
- | |||
- | Voici un exemple de restriction d' | ||
- | |||
- | ErrorDocument 403 http:// | ||
- | Order deny,allow | ||
- | allow from 123.123.123.123 | ||
- | Deny from all | ||
- | |||
- | Dans ce cas, l' | ||
- | ===== Empêcher l' | ||
- | |||
- | Par défaut, Apache applique les restrictions du fichier .htaccess à l' | ||
- | |||
- | Il est également possible de restreindre l' | ||
- | |||
- | Voici un exemple de restriction aux fichiers admin.php3 et admin2.php3 : | ||
- | |||
- | <Files admin.php3> | ||
- | AuthUserFile / | ||
- | AuthGroupFile /dev/null | ||
- | AuthName " | ||
- | AuthType Basic | ||
- | require user JFPillou | ||
- | </ | ||
- | |||
- | <Files admin2.php3> | ||
- | AuthUserFile / | ||
- | AuthGroupFile /dev/null | ||
- | AuthName " | ||
- | AuthType Basic | ||
- | require user JFPillou | ||
- | </ | ||
- | |||
- | Il faut utiliser une seule balise < | ||
- | Sinon, l' | ||
- | |||
- | .htaccess: Multiple | ||
- | |||
- | Pour info, il faut ajouter que depuis Apache 1.3, il est conseillé d' | ||
- | Cette nouvelle balise ne supporte aussi qu'un seul argument mais on peut traiter plusieurs fichiers grâce à une expression régulière. | ||
- | |||
- | ===== Empêcher l' | ||
- | |||
- | <Files *.png> | ||
- | Order Deny, Allow | ||
- | Deny from .LeNomDuDomaine.com | ||
- | </ | ||
- | |||
- | Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux images, dont l' | ||
- | |||
- | ===== Autoriser l' | ||
- | |||
- | <Files php*> | ||
- | Order Allow, Deny | ||
- | Deny from all | ||
- | Allow from .phpfrance.com | ||
- | Allow from .fr | ||
- | </ | ||
- | |||
- | Toutes les personnes (requêtes) provenant du domaine .phpfrance.com ou des domaines ayant la terminaison .fr pourront avoir accès aux fichiers commençant par php (par exemple, les fichiers phpbonjour.html, | ||
- | Protéger un répertoire par un login | ||
- | |||
- | Cette méthode (beaucoup moins sûre que la précédente) permet une authentification de bas niveau uniquement par le nom de l' | ||
- | |||
- | Require (user [liste des utilisateurs], | ||
- | |||
- | Voici un exemple de ligne du fichier .htaccess : | ||
- | |||
- | Require User Damien Comma PumpPHP Jeff Rastapaye | ||
- | |||
- | Tout utilisateur souhaitant rentrer dans le répertoire ou un de ses sous-répertoires sera refusé sauf s'il s' | ||
- | |||
- | ===== Obliger un utilisateur à satisfaire à au moins une des conditions ===== | ||
- | |||
- | Voici la syntaxe : | ||
- | |||
- | Satisfy (any, all) | ||
- | Order Allow, Deny | ||
- | Deny from all | ||
- | Allow from .free.fr | ||
- | Require User Damien Comma PumpPHP Jeff Rastapaye | ||
- | Satisfy Any | ||
- | |||
- | Ce qui signifie que l' | ||
- | Gérer les types de fichiers | ||
- | |||
- | Un type MIME (en anglais MIME type) est un ensemble de types de fichiers standard, permettant d' | ||
- | |||
- | ===== Ajouter un Mime-Type à un répertoire ===== | ||
- | |||
- | La syntaxe est la suivante : | ||
- | |||
- | AddType (mime/type [liste d' | ||
- | |||
- | Voici un exemple de mise en oeuvre du fichier .htaccess : | ||
- | |||
- | AddType image/ | ||
- | AddType application/ | ||
- | AddType application/ | ||
- | |||
- | Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s'il est installé sur votre machine) et de lui donner le fichier. | ||
- | |||
- | Habituellement, | ||
- | |||
- | Cette commande permet aussi d' | ||
- | |||
- | En pratique, on pourra donc utiliser cette commande pour ordonner à PHP de parser d' | ||
- | |||
- | ===== Forcer tous les fichiers d'un répertoire à un Mime-Type ===== | ||
- | |||
- | Voici la syntaxe à adopter : | ||
- | |||
- | ForceType (mime/type) | ||
- | |||
- | Par exemple avec la ligne suivante, tous les fichiers du répertoire contenant le fichier .htaccess seront considérés comme étant des fichiers .jpg quelle que soit leur extension : | ||
- | |||
- | ForceType image/jpg | ||
- | |||
- | Ce type de commande ne peut être utilisé dans les bornes ! | ||
- | Définir les extensions de fichiers par défaut | ||
- | |||
- | La syntaxe à suivre est : | ||
- | |||
- | DefaultType (mime/type) | ||
- | |||
- | Par exemple | ||
- | |||
- | DefaultType text/html | ||
- | |||
- | Cette option vous permet de définir le comportement par défaut du navigateur face à des extensions lui étant inconnues. | ||
- | Ici, il prendra tout fichier inconnu (par exemple ' | ||
- | |||
- | ===== Personnalisation des messages d' | ||
- | |||
- | Il s'agit d'une fonctionnalité pratique car elle permet de définir une page par défaut pour un type d' | ||
- | |||
- | Cela permet d'une part de guider l' | ||
- | |||
- | ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url]) | ||
- | |||
- | Les deux lignes suivantes permettent de définir des pages d' | ||
- | |||
- | ErrorDocument 403 / | ||
- | ErrorDocument 404 / | ||
- | |||
- | Ceci vous permet de donner un message d' | ||
- | |||
- | Voici quelques-unes des erreurs les plus courantes à personnaliser : | ||
- | |||
- | * 401 Unauthorized : la personne n'a pas passé avec succès l' | ||
- | * 403 Forbidden : le serveur n'a pas le droit de répondre à votre requête. | ||
- | * 404 Not Found : le serveur n'a pas trouvé le document souhaité. | ||
- | |||
- | ===== Changer le fichier index par défaut ===== | ||
- | |||
- | Le fichier index est le fichier qui est affiché lorsque aucun nom de fichier n'est défini dans l'URL (par exemple http:// | ||
- | |||
- | La syntaxe pour effectuer ce type d' | ||
- | |||
- | DirectoryIndex (fichiers) | ||
- | |||
- | Voici un exemple de mise en application : | ||
- | |||
- | DirectoryIndex index.php index.html index.phtml / | ||
- | |||
- | Lorsque vous essayez d' | ||
- | |||
- | Dans l' | ||
- | |||
- | ===== Quelques réécritures d'URL ===== | ||
- | |||
- | 0) En premier lieu, avant d' | ||
- | |||
- | RewriteEngine On | ||
- | |||
- | 1) Pour rediriger les internautes ainsi que les robots sur le même site mais en utilisant les " | ||
- | |||
- | RewriteCond %{HTTP_HOST} !^www. | ||
- | RewriteRule ^(.*) https:// | ||
- | |||
- | 2) Forcer le protocole HTTPS (fonctionne seulement si le nom de domaine possède un certificat SSL) : | ||
- | |||
- | RewriteCond %{HTTPS} !=on | ||
- | RewriteCond %{HTTP: | ||
- | RewriteRule ^ https:// | ||
- | |||
- | 3) Rediriger un site sous un nom de domaine de FSH vers un même et unique TLD (ici on voudra par exemple le .fr) : | ||
- | |||
- | RewriteCond %{HTTP_HOST} !^monsite.franceserv.fr$ | ||
- | RewriteRule ^(.*) https:// | ||
- | | ||
- | Il est également possible de définir le TLD à privilégier directement dans votre interface de gestion après avoir cliqué sur la bille de couleur en face de l' | ||
- | | ||
- | 4) Rediriger les internautes de tout le site vers un autre site : | ||
- | |||
- | Redirect permanent / https:// | ||
- | |||
- | 5) Rediriger les internautes d'une page vers une autre page : | ||
- | |||
- | Redirect permanent / | ||
- | |||
- | Bien que les directives Redirect permettent de rediriger les internautes, | ||
- | ===== Crédits ===== | ||
- | |||
- | Tutorial écrit par Jean-François Pillou et Douglas Six puis corrigé et adapté par et pour FranceServ Hébergement. |