Les directives fournies par le module
.htaccess pour
contrôler l'accès à certaines zones du serveur. Le contrôle d'accès
peut être effectué en fonction du nom d'hôte, de l'adresse IP, ou
d'autres caractéristiques de la requête client, telles qu'elles sont
enregistrées dans des variables
d'environnement. Les directives
Les restrictions d'accès basées sur l'hôte et l'authentification
à base de mots de passe peuvent être utilisées conjointement. Dans
ce cas, la directive
En général, les directives de restriction d'accès s'appliquent à
toutes les méthodes d'accès (GET, PUT,
POST, etc...). C'est d'ailleurs ce que l'on souhaite
dans la plupart des cas. Il est cependant possible de ne restreindre
l'accès que pour certaines méthodes, tout en laissant les autres
méthodes sans protection, en plaçant les directives dans une section
La directive
Le premier argument de cette directive est toujours
from. Les arguments suivants peuvent se présenter sous
trois formes. Si Allow from all est spécifié, tous les
hôtes ont l'autorisation d'accès, sauf si la configuration des
directives
Les hôtes dont les nom correspond à la chaîne spécifiée, ou
se terminant par elle, sont autorisés à accéder. Seuls les
éléments complets du nom de domaine sont comparés, si bien que
l'exemple ci-dessus correspondra à foo.apache.org,
mais pas à fooapache.org. Avec cette configuration,
Apache va effectuer une double recherche DNS sur l'adresse IP du
client, sans tenir compte de la définition de la directive
L'adresse IP d'un hôte qui a l'autorisation d'accès
Les 1 à 3 premiers octets d'une adresse IP, pour référencer un sous-réseau.
Un réseau a.b.c.d, et un masque de sous-réseau w.x.y.z. pour la restriction plus fine d'un sous-réseau.
Identique au cas précédent, mais le masque de sous-réseau se compose des nnn bits de poids forts.
Notez que les trois derniers exemples référencent exactement le même ensemble d'hôtes.
On peut spécifier des adresses et sous-réseaux IPv6 de la manière suivante :
Le troisième format d'arguments de la directive
Allow from
env=var-env est spécifié, la
requête est autorisée si la variable d'environnement
var-env existe. Lorsque Allow from
env=!var-env est spécifié, la requête est
autorisée à accéder si la variable d'environnement
var-env n'existe pas. Le serveur fournit la possibilité
de définir des variables d'environnement avec une grande souplesse
en fonction des caractéristiques de la requête client à l'aide des
directives fournies par le module User-Agent (type de
navigateur), Referer, etc...
Dans cet exemple, les navigateurs dont la chaîne de description
de l'en-tête user-agent commence par KnockKnock/2.0 se
verront accorder l'accès, alors que tous les autres se le verront
refuser.
Cette directive permet de restreindre l'accès au serveur en
fonction du nom d'hôte, de l'adresse IP, ou de variables
d'environnement. Les arguments de la directive
La directive
Notez que toutes les directives
Ordre peut être soit :
Allow,DenyDeny,AllowMutual-failureOrder
Allow,Deny qui le remplace.Les mots-clés ne doivent être séparés que par des virgules ; aucun espace ne doit s'intercaler entre eux.
| Directives qui conviennent | Résultat de Allow,Deny | Résultat de Deny,Allow |
|---|---|---|
| Allow seulement convient | Requête autorisée | Requête autorisée |
| Deny seulement convient | Requête rejetée | Requête rejetée |
| Aucune directive ne convient | La seconde directive par défaut: Rejet | La seconde directive par défaut: Autorisation |
| Allow & Deny conviennent | La dernière directive qui convient prend le contrôle: Rejet | La dernière directive qui convient prend le contrôle: Autorisation |
Dans l'exemple suivant, tous les hôtes du domaine apache.org ont l'autorisation d'accès ; tous les autres hôtes voient leur accès refusé.
Dans l'exemple suivant, tous les hôtes du domaine apache.org ont
l'autorisation d'accès, sauf les hôtes du sous-domaine
foo.apache.org qui voient leur accès refusé. Tous les hôtes qui ne
font pas partie du domaine apache.org voient leur accès refusé car
le statut d'accès par défaut est défini à
En revanche, si la directive Deny,Allow, tous les
hôtes auront l'autorisation d'accès. Ceci est dû au fait que l'on ne
tient pas compte de l'ordre dans lequel apparaissent les directives
dans le fichier de configuration, et que la directive Allow
from apache.org est évaluée en dernier et l'emporte donc sur
la directive Deny from foo.apache.org. Tous les hôtes
qui ne font pas partie du domaine apache.org auront
aussi l'autorisation d'accès, car le statut d'accès par défaut est
défini à
Même en l'absence de directives
interdira tout accès au répertoire /www car le
statut d'accès par défaut est défini à
La directive .htaccess, sans tenir compte de la définition de la
directive