From: Lucien Gentis Les fichiers Les fichiers .htaccess
fournissent une méthode pour
-modifier la configuration du serveur au niveau de chaque répertoire..htaccess
fournissent une méthode pour
+modifier la configuration du serveur au niveau de chaque répertoire.
.htaccess
ne doivent être utilisés
- que si vous n'avez pas accès au fichier de configuration du serveur
+ .htaccess
ne doivent être utilisés
+ que si vous n'avez pas accès au fichier de configuration du serveur
principal. L'utilisation des fichiers .htaccess
ralentit le fonctionnement de votre serveur HTTP Apache. Il est toujours
- préférable de définir les directives que vous pouvez inclure dans un
+ préférable de définir les directives que vous pouvez inclure dans un
fichier .htaccess
dans une section Les fichiers .htaccess
(ou "fichiers de
- configuration distribués") fournissent une méthode pour modifier la
- configuration du serveur au niveau d'un répertoire. Un fichier,
- contenant une ou plusieurs directives de configuration, est placé
- dans un répertoire de documents particulier, et ses directives
- s'appliquent à ce répertoire et à tous ses sous-répertoires.
Si vous voulez donner un autre nom à votre fichier +
Si vous voulez donner un autre nom à votre fichier
.htaccess
, vous pouvez le faire en utilisant la
directive .config
, vous pouvez mettre ceci dans le fichier de
configuration de votre serveur :
En général, les fichiers .htaccess
utilisent la même
+
En général, les fichiers .htaccess
utilisent la même
syntaxe que les fichiers de
configuration principaux. Ce que vous pouvez mettre dans ces
- fichier est déterminé par la directive .htaccess
. Si une
directive est permise dans un fichier .htaccess
file,
la documentation de cette directive contiendra une section Override,
- spécifiant quelle valeur doit prendre
Par exemple, si vous regardez la documentation de la directive
.htaccess
(Voir la ligne de contexte dans le résumé de
+ que cette dernière est permise dans les fichiers
+ .htaccess
(Voir la ligne de contexte dans le résumé de
la directive). La ligne Override indique
FileInfo
. Vous devez donc avoir au moins
AllowOverride FileInfo
pour que cette directive soit
- traitée dans les fichiers .htaccess
.
.htaccess
.
Si vous n'êtes pas sûr qu'une directive particulière soit permise +
Si vous n'êtes pas sûr qu'une directive particulière soit permise
dans un fichier .htaccess
, lisez la documentation de
cette directive, et consultez la ligne de contexte pour
".htaccess".
En principe, vous ne devriez utiliser les fichiers
- .htaccess
que lorsque vous n'avez pas accès au fichier de
+ .htaccess
que lorsque vous n'avez pas accès au fichier de
configuration du serveur principal. Par exemple, la fausse
- idée
+ idée
selon laquelle l'authentification de l'utilisateur devrait toujours
- être faite dans les fichiers .htaccess
est très
- répandue. Il est aussi souvent avancé, ces dernières
- années, que les directives de .htaccess
. Ceci est
+ être faite dans les fichiers .htaccess
est très
+ répandue. Il est aussi souvent avancé, ces dernières
+ années, que les directives de .htaccess
. Ceci est
tout simplement faux. Vous pouvez configurer
l'authentification des utilisateurs au niveau de la configuration du
- serveur principal, et c'est en fait cette méthode qui doit être
- privilégiée. De même, les directives de
- mod_rewrite
fonctionneront mieux, à de nombreux égards,
+ serveur principal, et c'est en fait cette méthode qui doit être
+ privilégiée. De même, les directives de
+ mod_rewrite
fonctionneront mieux, à de nombreux égards,
dans le contexte du serveur principal.
Les fichiers .htaccess
ne devraient être utilisés
- que dans le cas où les fournisseurs de contenu ont besoin de
- modifier la configuration du serveur au niveau d'un répertoire, mais
- ne possèdent pas l'accès root sur le système du serveur. Si
+
Les fichiers .htaccess
ne devraient être utilisés
+ que dans le cas où les fournisseurs de contenu ont besoin de
+ modifier la configuration du serveur au niveau d'un répertoire, mais
+ ne possèdent pas l'accès root sur le système du serveur. Si
l'administrateur du serveur ne souhaite pas effectuer des
- modifications de configuration incessantes, il peut être intéressant
- de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces
+ modifications de configuration incessantes, il peut être intéressant
+ de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces
modifications par le biais de fichiers .htaccess
. Ceci
- est particulièrement vrai dans le cas où le fournisseur d'accès à
- Internet héberge de nombreux sites d'utilisateurs sur un seul
+ est particulièrement vrai dans le cas où le fournisseur d'accès Ã
+ Internet héberge de nombreux sites d'utilisateurs sur un seul
serveur, et souhaite que ces utilisateurs puissent modifier
- eux-mêmes leurs configurations.
Cependant et d'une manière générale, il vaut mieux éviter
- d'utiliser les fichiers .htaccess
. Tout élément de
+
Cependant et d'une manière générale, il vaut mieux éviter
+ d'utiliser les fichiers .htaccess
. Tout élément de
configuration que vous pourriez vouloir mettre dans un fichier
- .htaccess
, peut aussi être mis, et avec la même
- efficacité, dans une section
Il y a deux raisons principales d'éviter l'utilisation des +
Il y a deux raisons principales d'éviter l'utilisation des
fichiers .htaccess
.
La première est liée aux performances. Lorsque la directive
- .htaccess
,
- httpd va rechercher leur présence dans chaque répertoire. Ainsi,
- permettre l'utilisation des fichiers .htaccess
est déjà
- en soi une cause de dégradation des performances, que vous utilisiez
+
La première est liée aux performances. Lorsque la directive
+ .htaccess
,
+ httpd va rechercher leur présence dans chaque répertoire. Ainsi,
+ permettre l'utilisation des fichiers .htaccess
est déjÃ
+ en soi une cause de dégradation des performances, que vous utilisiez
effectivement ces fichiers ou non ! De plus, le fichier
- .htaccess
est chargé en mémoire chaque fois qu'un
- document fait l'objet d'une requête.
.htaccess
est chargé en mémoire chaque fois qu'un
+ document fait l'objet d'une requête.
Notez aussi que httpd doit rechercher les fichiers
- .htaccess
dans tous les répertoires de niveau
- supérieur, afin de rassembler toutes les directives qui s'appliquent
- au répertoire courant (Voir la section comment sont
- appliquées les directives). Ainsi, si un fichier fait l'objet
- d'une requête à partir d'un répertoire
+ .htaccess
dans tous les répertoires de niveau
+ supérieur, afin de rassembler toutes les directives qui s'appliquent
+ au répertoire courant (Voir la section comment sont
+ appliquées les directives). Ainsi, si un fichier fait l'objet
+ d'une requête à partir d'un répertoire
/www/htdocs/exemple
, httpd doit rechercher les
fichiers suivants :
En conséquence, chaque accès à un fichier de ce répertoire
- nécessite 4 accès au système de fichiers supplémentaires pour
- rechercher des fichiers .htaccess
, même si
- aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
- se produire que si les fichiers .htaccess
ont été
- autorisés pour le répertoire /
, ce qui est rarement le
+
En conséquence, chaque accès à un fichier de ce répertoire
+ nécessite 4 accès au système de fichiers supplémentaires pour
+ rechercher des fichiers .htaccess
, même si
+ aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
+ se produire que si les fichiers .htaccess
ont été
+ autorisés pour le répertoire /
, ce qui est rarement le
cas.
La seconde raison d'éviter l'utilisation des fichiers
- .htaccess
est liée à la sécurité. Si vous permettez aux
+
La seconde raison d'éviter l'utilisation des fichiers
+ .htaccess
est liée à la sécurité. Si vous permettez aux
utilisateurs de modifier la configuration du serveur, il peut en
- résulter des conséquences sur lesquelles vous n'aurez aucun
- contrôle. Réfléchissez bien avant de donner ce privilège à vos
+ résulter des conséquences sur lesquelles vous n'aurez aucun
+ contrôle. Réfléchissez bien avant de donner ce privilège à vos
utilisateurs. Notez aussi que ne pas donner aux utilisateurs les
- privilèges dont ils ont besoin va entraîner une augmentation des
- demandes de support technique. Assurez-vous d'avoir informé
- clairement vos utilisateurs du niveau de privilèges que vous leur
- avez attribué. Indiquer exactement comment vous avez défini la
+ privilèges dont ils ont besoin va entraîner une augmentation des
+ demandes de support technique. Assurez-vous d'avoir informé
+ clairement vos utilisateurs du niveau de privilèges que vous leur
+ avez attribué. Indiquer exactement comment vous avez défini la
directive
Notez que mettre un fichier .htaccess
contenant une
- directive dans un répertoire /www/htdocs/exemple
- revient exactement au même que mettre la même directive dans une
+ directive dans un répertoire /www/htdocs/exemple
+ revient exactement au même que mettre la même directive dans une
section Directory <Directory "/www/htdocs/exemple">
du fichier de configuration de votre serveur principal :
Cependant, la perte de performances sera moindre si vous
- définissez cette directive dans la configuration de
- votre serveur principal, car cette dernière ne sera chargée qu'une
- seule fois au moment du démarrage du serveur, alors qu'elle le sera
- à chaque accès dans le cas d'un fichier .htaccess
.
.htaccess
.
- L'utilisation des fichiers .htaccess
peut être
- entièrement désactivée en définissant la directive none
:
L'utilisation des fichiers .htaccess
peut être
+ entièrement désactivée en définissant la directive none
:
Les directives de configuration situées dans un fichier
- .htaccess
s'appliquent au répertoire dans lequel ce
- fichier .htaccess
se trouve, ainsi qu'à tous ses
- sous-répertoires. Cependant, il est important de garder à l'esprit
+
Les directives de configuration situées dans un fichier
+ .htaccess
s'appliquent au répertoire dans lequel ce
+ fichier .htaccess
se trouve, ainsi qu'Ã tous ses
+ sous-répertoires. Cependant, il est important de garder à l'esprit
qu'il peut y avoir des fichiers .htaccess
dans les
- répertoires de niveau supérieur. Les directives sont appliquées
- selon l'ordre dans lequel elles sont rencontrées. Ainsi, les
- directives d'un fichier .htaccess
situé dans un
- répertoire particulier peuvent écraser les directives se trouvant
- dans des fichiers .htaccess
situés à un niveau
- supérieur dans l'arborescence des répertoires. Et ces dernières
- peuvent elles-mêmes avoir écrasé des directives d'un fichier
- .htaccess
situé à un niveau encore plus haut, ou dans
+ répertoires de niveau supérieur. Les directives sont appliquées
+ selon l'ordre dans lequel elles sont rencontrées. Ainsi, les
+ directives d'un fichier .htaccess
situé dans un
+ répertoire particulier peuvent écraser les directives se trouvant
+ dans des fichiers .htaccess
situés à un niveau
+ supérieur dans l'arborescence des répertoires. Et ces dernières
+ peuvent elles-mêmes avoir écrasé des directives d'un fichier
+ .htaccess
situé à un niveau encore plus haut, ou dans
le fichier de configuration du serveur principal.
Exemple :
-Dans le répertoire /www/htdocs/exemple1
se trouve un
+
Dans le répertoire /www/htdocs/exemple1
se trouve un
fichier .htaccess
contenant ce qui suit :
Note : "AllowOverride Options
" doit être présent
+
Note : "AllowOverride Options
" doit être présent
pour permettre l'utilisation de la directive ".htaccess
.
Dans le répertoire /www/htdocs/exemple1/exemple2
se
+
Dans le répertoire /www/htdocs/exemple1/exemple2
se
trouve un fichier .htaccess
contenant ce qui suit
:
Ainsi, à cause de ce second fichier .htaccess
du
- répertoire /www/htdocs/exemple1/exemple2
, l'exécution
- des CGI est interdite, car la dernière définition d'options
- Options Includes
écrase toute autre définition
- d'options d'un fichier .htaccess
situé dans un
- répertoire de niveau supérieur.
Ainsi, Ã cause de ce second fichier .htaccess
du
+ répertoire /www/htdocs/exemple1/exemple2
, l'exécution
+ des CGI est interdite, car la dernière définition d'options
+ Options Includes
écrase toute autre définition
+ d'options d'un fichier .htaccess
situé dans un
+ répertoire de niveau supérieur.
Comme indiqué dans la documentation sur les Comme indiqué dans la documentation sur les Sections de configuration, les fichiers
- .htaccess
peuvent écraser les directives des sections
+ .htaccess
peuvent écraser les directives des sections
.htaccess
, vous pouvez utiliser :
/www/htdocs
.Si vous accédez directement à ce point du document pour apprendre
- à effectuer une authentification, il est important de noter ceci. Il
- existe une fausse idée selon laquelle il serait nécessaire
- d'utiliser les fichiers .htaccess
pour implémenter
+
Si vous accédez directement à ce point du document pour apprendre
+ Ã effectuer une authentification, il est important de noter ceci. Il
+ existe une fausse idée selon laquelle il serait nécessaire
+ d'utiliser les fichiers .htaccess
pour implémenter
l'authentification par mot de passe. Ceci est tout simplement faux.
- Pour y parvenir, il est préférable de mettre les directives
+ Pour y parvenir, il est préférable de mettre les directives
d'authentification dans une section .htaccess
ne
- devraient être utilisés que dans le cas où vous n'avez pas accès au
+ devraient être utilisés que dans le cas où vous n'avez pas accès au
fichier de configuration du serveur principal. Voir ci-dessus pour savoir dans quels cas vous devez ou
ne devez pas utiliser les fichiers .htaccess
.
Ceci étant dit, si vous pensez que vous devez quand-même utiliser +
Ceci étant dit, si vous pensez que vous devez quand-même utiliser
un fichier .htaccess
, vous pouvez utiliser la
configuration suivante :
Notez que AllowOverride AuthConfig
doit être présent
+
Notez que AllowOverride AuthConfig
doit être présent
pour que ces directives produisent leur effet.
Vous pouvez vous référer au tutoriel sur - l'authentification pour une description plus détaillée de +
Vous pouvez vous référer au tutoriel sur + l'authentification pour une description plus détaillée de l'authentification et de l'autorisation.
Les fichiers .htaccess
sont aussi couramment
- utilisés pour activer les SSI pour un répertoire particulier. Pour y
+ utilisés pour activer les SSI pour un répertoire particulier. Pour y
parvenir, on utilise les directives de configuration suivantes,
- placées dans un fichier .htaccess
enregistré dans le
- répertoire considéré :
.htaccess
enregistré dans le
+ répertoire considéré :
Notez que AllowOverride Options
et AllowOverride
- FileInfo
doivent être tous les deux présents pour que ces
+ FileInfo doivent être tous les deux présents pour que ces
directives puissent produire leur effet.
Vous pouvez vous référer au tutoriel SSI - pour une description plus détaillée des SSI.
+Vous pouvez vous référer au tutoriel SSI + pour une description plus détaillée des SSI.
Sivous utilisez des directives .htaccess
, gardez à l'esprit que les choses sont légèrement
-différentes dans un contexte de répertoire. En particulier, les règles
-sont relatives au répertoire courant, et non à l'URI original. Considérez
+.htaccess
, gardez à l'esprit que les choses sont légèrement
+différentes dans un contexte de répertoire. En particulier, les règles
+sont relatives au répertoire courant, et non à l'URI original. Considérez
les exemples suivants :
On voit que si le fichier .htaccess
se situe à la racine
-de vos documents, le slash de tête est supprimé de la valeur de
-remplacement spécifiée pour la règle .htaccess
se situe à la racine
+de vos documents, le slash de tête est supprimé de la valeur de
+remplacement spécifiée pour la règle .htaccess
se situe dans le répertoire images
,
-la chaîne /images/
disparaît de cette même valeur de
-remplacement. Il doit donc en être de même dans votre expression
+.htaccess
se situe dans le répertoire images
,
+la chaîne /images/
disparaît de cette même valeur de
+remplacement. Il doit donc en être de même dans votre expression
rationnelle.
Veuillez vous référer à cette documentation -pour une étude détaillée de l'utilisation du module +
Veuillez vous référer à cette documentation
+pour une étude détaillée de l'utilisation du module
mod_rewrite
.
En fin de compte, vous avez décidé d'utiliser un fichier
- .htaccess
pour permettre l'exécution des programmes CGI
- dans un répertoire particulier. Pour y parvenir, vous pouvez
+
En fin de compte, vous avez décidé d'utiliser un fichier
+ .htaccess
pour permettre l'exécution des programmes CGI
+ dans un répertoire particulier. Pour y parvenir, vous pouvez
utiliser la configuration suivante :
Alternativement, si vous souhaitez que tous les fichiers d'un - répertoire donné soient considérés comme des programmes CGI, vous + répertoire donné soient considérés comme des programmes CGI, vous pouvez utiliser la configuration suivante :
Notez que AllowOverride Options
et AllowOverride
- FileInfo
doivent être tous les deux présents pour que ces
+ FileInfo doivent être tous les deux présents pour que ces
directives puissent produire leur effet.
Vous pouvez vous référer au tutoriel CGI - pour une description plus détaillée de la configuration et de la +
Vous pouvez vous référer au tutoriel CGI + pour une description plus détaillée de la configuration et de la proprammation CGI.
De nombreuses raisons peuvent être à l'origine du fait que +
De nombreuses raisons peuvent être à l'origine du fait que
les directives que vous avez mises dans un fichier
- .htaccess
ne produisent pas l'effet désiré.
.htaccess
ne produisent pas l'effet désiré.
- Le plus souvent, le problème vient du fait que la définition de +
Le plus souvent, le problème vient du fait que la définition de
la directive .htaccess
. Vérifiez si une directive
- AllowOverride None
n'affecte pas le répertoire où se
- trouve votre fichier. Un bon test consiste à mettre des directives
- dont la syntaxe est erronée dans votre ficher .htaccess
- et de recharger la page. Si aucune erreur n'est générée par le
+ .htaccess
. Vérifiez si une directive
+ AllowOverride None
n'affecte pas le répertoire où se
+ trouve votre fichier. Un bon test consiste à mettre des directives
+ dont la syntaxe est erronée dans votre ficher .htaccess
+ et de recharger la page. Si aucune erreur n'est générée par le
serveur, il est pratiquement certain qu'une directive
- AllowOverride None
affecte votre répertoire.
AllowOverride None
affecte votre répertoire.
Par contre, si vous obtenez des erreurs de serveur lorsque vous
- tentez d'accéder à des documents, consultez votre journal des
+ tentez d'accéder à des documents, consultez votre journal des
erreurs de httpd. Il vous indiquera probablement que la directive
- utilisée dans votre fichier .htaccess
n'est pas
+ utilisée dans votre fichier .htaccess
n'est pas
permise.
Cela signifie soit que vous utilisez une directive qui n'est
jamais permise dans les fichiers .htaccess
, soit
- que vous n'avez tout simplement pas défini la directive
-
Le journal des erreurs peut aussi vous signaler une erreur de - syntaxe dans l'usage de la directive elle-même.
+ syntaxe dans l'usage de la directive elle-même.Dans ce cas, le message d'erreur sera spécifique à l'erreur +
Dans ce cas, le message d'erreur sera spécifique à l'erreur de syntaxe que vous avez commise.
Sur les systèmes multi-utilisateurs, on peut permettre à chaque -utilisateur d'avoir un site web dans son répertoire home à l'aide de la +
Sur les systèmes multi-utilisateurs, on peut permettre à chaque
+utilisateur d'avoir un site web dans son répertoire home à l'aide de la
directive http://example.com/~nom_utilisateur/
-recevront un contenu situé dans le répertoire home de l'utilisateur
-"nom_utilisateur
", et dans le sous-répertoire spécifié par
+recevront un contenu situé dans le répertoire home de l'utilisateur
+"nom_utilisateur
", et dans le sous-répertoire spécifié par
la directive
Notez que par défaut, l'accès à ces répertoires n'est -pas permis. Vous pouvez en permettre l'accès à l'aide +
Notez que par défaut, l'accès à ces répertoires n'est
+pas permis. Vous pouvez en permettre l'accès à l'aide
de la directive
dans le fichier de configuration par défaut +
dans le fichier de configuration par défaut
conf/httpd.conf
, et en adaptant le
fichier httpd-userdir.conf
selon vos besoins, ou en
- incluant les directives appropriées dans une section
+ incluant les directives appropriées dans une section
Directory
du fichier de configuration principal.
La directive
Si le chemin spécifié ne commence pas par un slash, il sera - interprété comme chemin relatif au répertoire home de l'utilisateur - considéré. Par exemple, avec cette configuration :
+Si le chemin spécifié ne commence pas par un slash, il sera + interprété comme chemin relatif au répertoire home de l'utilisateur + considéré. Par exemple, avec cette configuration :
/home/rbowen/public_html/fichier.html
- Si le chemin spécifié commence par un slash, le chemin du fichier +
Si le chemin spécifié commence par un slash, le chemin du fichier sera construit en utilisant ce chemin, suivi du nom de l'utilisateur - considéré. Par exemple, avec cette configuration :
+ considéré. Par exemple, avec cette configuration :/var/html/rbowen/fichier.html
- Si le chemin spécifié contient un astérisque (*), ce dernier sera - remplacé par le nom de l'utilisateur dans le chemin du fichier +
Si le chemin spécifié contient un astérisque (*), ce dernier sera + remplacé par le nom de l'utilisateur dans le chemin du fichier correspondant. Par exemple, avec cette configuration :
/var/www/rbowen/docs/fichier.html
- On peut aussi définir plusieurs répertoires ou chemins de - répertoires.
+On peut aussi définir plusieurs répertoires ou chemins de + répertoires.
On peut utiliser la directive
L'exemple ci-dessus va rediriger une requête pour +
L'exemple ci-dessus va rediriger une requête pour
http://example.com/~bob/abc.html
vers
http://exemple.org/users/bob/abc.html
.
En suivant la syntaxe décrite dans la documentation de UserDir, - vous pouvez définir quels utilisateurs sont autorisés à utiliser - cette fonctionnalité :
+En suivant la syntaxe décrite dans la documentation de UserDir, + vous pouvez définir quels utilisateurs sont autorisés à utiliser + cette fonctionnalité :
La configuration ci-dessus va autoriser l'utilisation de la
- fonctionnalité pour tous les utilisateurs, à l'exception de ceux
- listés à la suite de l'argument disabled
. De même, vous
- pouvez interdire l'utilisation de la fonctionnalité à tous les
+ fonctionnalité pour tous les utilisateurs, à l'exception de ceux
+ listés à la suite de l'argument disabled
. De même, vous
+ pouvez interdire l'utilisation de la fonctionnalité à tous les
utilisateurs sauf certains d'entre eux en utilisant une
configuration du style :
Vous trouverez d'autres exemples dans la documentation de @@ -158,12 +158,12 @@ avec le système de fichiers
Afin de réserver un répertoire cgi-bin pour chaque utilisateur, +
Afin de réserver un répertoire cgi-bin pour chaque utilisateur,
vous pouvez utiliser une section
Avec la configuration ci-dessus, et en supposant que
- UserDir
est défini à public_html
, un
- programme CGI exemple.cgi
pourra être chargé depuis ce
- répertoire en passant par l'URL :
UserDir
est défini à public_html
, un
+ programme CGI exemple.cgi
pourra être chargé depuis ce
+ répertoire en passant par l'URL :
Si vous voulez que vos utilisateurs puissent modifier la
configuration du serveur pour ce qui concerne leur espace web, ils
devront utiliser des fichiers .htaccess
pour effectuer
- ces modifications. Assurez-vous d'avoir défini la directive
-
Les SSI permettent d'ajouter du contenu dynamique à des documents -HTML préexistants.
+Les SSI permettent d'ajouter du contenu dynamique à des documents +HTML préexistants.
SSI (Server Side Includes) est constitué de directives placées dans - des pages HTML, et évaluées par le serveur au moment où les pages - sont servies. Elles vous permettent d'ajouter du contenu généré - dynamiquement à une page HTML préexistante, sans avoir à servir la - page entière via un programme CGI, ou toute autre technologie de +
SSI (Server Side Includes) est constitué de directives placées dans + des pages HTML, et évaluées par le serveur au moment où les pages + sont servies. Elles vous permettent d'ajouter du contenu généré + dynamiquement à une page HTML préexistante, sans avoir à servir la + page entière via un programme CGI, ou toute autre technologie de contenu dynamique.
-Par exemple, vous pouvez insérer la directive suivante dans une +
Par exemple, vous pouvez insérer la directive suivante dans une page HTML existante :
Ainsi, lorsque la page sera servie, la directive sera évaluée et - remplacée par sa valeur :
+Ainsi, lorsque la page sera servie, la directive sera évaluée et + remplacée par sa valeur :
Le choix entre l'utilisation des SSI et la génération entière de - la page par un programme quelconque, est en général dicté par la - proportion de contenu statique et de contenu devant être généré - chaque fois que la page est servie. SSI est idéal pour ajouter de - petites quantités d'information, comme l'heure courante dans - l'exemple précédent. Mais si la - plus grande partie de votre page est générée au moment où elle est +
Le choix entre l'utilisation des SSI et la génération entière de + la page par un programme quelconque, est en général dicté par la + proportion de contenu statique et de contenu devant être généré + chaque fois que la page est servie. SSI est idéal pour ajouter de + petites quantités d'information, comme l'heure courante dans + l'exemple précédent. Mais si la + plus grande partie de votre page est générée au moment où elle est servie, vous devez vous tourner vers une autre solution.
Cette directive indique à Apache que vous désirez permettre la - recherche de directives SSI lors de l'interprétation des fichiers. +
Cette directive indique à Apache que vous désirez permettre la
+ recherche de directives SSI lors de l'interprétation des fichiers.
Notez cependant que la plupart des configurations contiennent de
nombreuses directives Options
au répertoire
- spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
- qu'elles y seront bien activées.
Options
au répertoire
+ spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
+ qu'elles y seront bien activées.
Tout fichier ne fera cependant pas l'objet de recherche de
- directives SSI. Vous devez indiquer à Apache quels fichiers seront
- concernés. Vous pouvez y parvenir en indiquant une extension, comme
- .shtml
, à l'aide des directives suivantes :
.shtml
, Ã l'aide des directives suivantes :
Un des désavantages de cette approche réside dans le fait que si - vous voulez ajouter des directives SSI à une page préexistante, vous +
Un des désavantages de cette approche réside dans le fait que si
+ vous voulez ajouter des directives SSI à une page préexistante, vous
devrez changer le nom de cette page, et donc tout lien qui la
- contient, de façon à ce qu'elle possède l'extension
- .shtml
, condition nécessaire pour que les directives
- SSI qu'elle contient soient traitées.
.shtml
, condition nécessaire pour que les directives
+ SSI qu'elle contient soient traitées.
- Une autre méthode consiste à utiliser la directive
La directive chmod
.
chmod
.
Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
- personnes peuvent vous conseiller de tout simplement indiquer à
+ personnes peuvent vous conseiller de tout simplement indiquer Ã
Apache de rechercher des directives SSI dans tous les fichiers
- .html
, ce qui vous évite d'avoir à gérer les noms de
+ .html
, ce qui vous évite d'avoir à gérer les noms de
fichiers avec extension .shtml
. Ils n'ont probablement
pas entendu parler de la directive
Bien entendu, sous Windows, il n'y a pas de bit d'exécution à +
Bien entendu, sous Windows, il n'y a pas de bit d'exécution à positionner, ce qui limite un peu vos choix.
-Dans sa configuration par défaut, Apache n'envoie pas la date de - dernière modification ou les en-têtes HTTP relatifs à la taille des - contenus dans les pages SSI, car ses valeurs sont difficiles à +
Dans sa configuration par défaut, Apache n'envoie pas la date de + dernière modification ou les en-têtes HTTP relatifs à la taille des + contenus dans les pages SSI, car ses valeurs sont difficiles à calculer pour les contenus dynamiques. Ceci peut induire une - impression de diminution des performances côté client, en empêchant - la mise en cache de votre document. Il existe deux méthodes pour - résoudre ce problème :
+ impression de diminution des performances côté client, en empêchant + la mise en cache de votre document. Il existe deux méthodes pour + résoudre ce problème :XBitHack Full
. Elle
- indique à Apache de déterminer la date de dernière modification en
- ne regardant que la date du fichier à l'origine de la requête,
+ indique à Apache de déterminer la date de dernière modification en
+ ne regardant que la date du fichier à l'origine de la requête,
tout en ignorant la date de modification de tout fichier inclus.Le format d'une directive SSI étant similaire à celui d'un - commentaire HTML, si vous n'avez pas activé correctement SSI, le +
Le format d'une directive SSI étant similaire à celui d'un + commentaire HTML, si vous n'avez pas activé correctement SSI, le navigateur l'ignorera, mais elle sera encore visible dans le source - HTML. Si SSI est correctement configuré, la directive sera remplacée - par ses résultats.
+ HTML. Si SSI est correctement configuré, la directive sera remplacée + par ses résultats. -"fonction" peut prendre de nombreuses formes, et nous décrirons - plus précisément la plupart d'entre eux dans la prochaine version de +
"fonction" peut prendre de nombreuses formes, et nous décrirons + plus précisément la plupart d'entre eux dans la prochaine version de ce document. Pour le moment, voici quelques exemples de ce que vous pouvez faire avec SSI.
@@ -211,8 +211,8 @@ HTML préexistants.La fonction echo
permet d'afficher la valeur d'une
variable. Il existe un grand nombre de variables standards, y
compris l'ensemble des variables d'environnement disponibles pour
- les programmes CGI. De plus, vous pouvez définir vos propres
- variables à l'aide de la fonction set
.
set
.
Si vous n'aimez pas le format sous lequel la date s'affiche, vous
pouvez utiliser la fonction config
avec un attribut
@@ -227,18 +227,18 @@ HTML préexistants.
Le format peut là aussi être modifié à l'aide de l'attribut +
Le format peut là aussi être modifié à l'aide de l'attribut
timefmt
.
C'est le cas le plus courant d'utilisation des SSI - afficher les - résultats d'un programme CGI, comme l'universellement adoré - "compteur d'accès".
+ résultats d'un programme CGI, comme l'universellement adoré + "compteur d'accès".Vous trouverez dans ce qui suit quelques exemples spécifiques de +
Vous trouverez dans ce qui suit quelques exemples spécifiques de ce que vous pouvez faire de vos documents HTML avec SSI.
-Nous avons mentionné plus haut que vous pouviez utiliser SSI pour - informer l'utilisateur de la date de dernière modification du - document. Cependant, la méthode pour y parvenir n'a pas été vraiment - abordée. Placé dans votre document HTML, le code suivant va insérer - un repère de temps dans votre page. Bien entendu, SSI devra avoir - été correctement activé, comme décrit plus haut.
+Nous avons mentionné plus haut que vous pouviez utiliser SSI pour + informer l'utilisateur de la date de dernière modification du + document. Cependant, la méthode pour y parvenir n'a pas été vraiment + abordée. Placé dans votre document HTML, le code suivant va insérer + un repère de temps dans votre page. Bien entendu, SSI devra avoir + été correctement activé, comme décrit plus haut.
Bien entendu, vous devez remplacer ssi.shtml
par le
- nom du fichier auquel vous faites référence. Ceci ne conviendra pas
- si vous recherchez un morceau de code générique que vous pourrez
- insérer dans tout fichier ; dans ce cas, il est préférable
+ nom du fichier auquel vous faites référence. Ceci ne conviendra pas
+ si vous recherchez un morceau de code générique que vous pourrez
+ insérer dans tout fichier ; dans ce cas, il est préférable
d'utiliser la variable LAST_MODIFIED
:
Pour plus de détails sur le format timefmt
, tapez
- strftime
dans votre moteur de recherche préferé. La
+
Pour plus de détails sur le format timefmt
, tapez
+ strftime
dans votre moteur de recherche préferé. La
syntaxe est identique.
En plus du format de date, vous pouvez utiliser l'élément +
En plus du format de date, vous pouvez utiliser l'élément
config
pour configurer deux autres choses.
En général, lorsque quelque chose se passe mal avec votre +
En général, lorsque quelque chose se passe mal avec votre directive SSI, vous recevez le message :
Il est cependant probable que les utilisateurs finaux ne voient - jamais ce message, car vous aurez résolu tous les problèmes issus de + jamais ce message, car vous aurez résolu tous les problèmes issus de vos directives SSI avant que votre site ne soit mis en production. (N'est-ce pas ?)
Vous pouvez aussi modifier le format sous lequel les tailles de
- fichiers sont affichées à l'aide de l'attribut sizefmt
.
- Vous pouvez spécifier bytes
pour un affichage en
+ fichiers sont affichées à l'aide de l'attribut sizefmt
.
+ Vous pouvez spécifier bytes
pour un affichage en
octets, ou abbrev
pour un affichage plus concis en Ko
ou Mo, selon le cas.
J'ai pour projet, dans les prochains mois, d'écrire un article à +
J'ai pour projet, dans les prochains mois, d'écrire un article Ã
propos de l'utilisation des SSI avec des petits programmes CGI. Pour
l'instant, voici ce que vous pouvez faire avec la fonction
- exec
. Vous pouvez vraiment faire exécuter une commande
- par SSI en utilisant le shell (/bin/sh
, pour être plus
- précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
- qui suit vous permet d'afficher le contenu d'un répertoire.
exec
. Vous pouvez vraiment faire exécuter une commande
+ par SSI en utilisant le shell (/bin/sh
, pour être plus
+ précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
+ qui suit vous permet d'afficher le contenu d'un répertoire.
Vous noterez probablement l'étrange formatage provoqué par cette +
Vous noterez probablement l'étrange formatage provoqué par cette
directive sous Windows, car la sortie de dir
contient
- la chaîne de caractères "<dir
>", ce qui trompe le
+ la chaîne de caractères "<dir
>", ce qui trompe le
navigateur.
Notez que cette fonctionnalité est très dangereuse, car elle va
- permettre d'exécuter tout code associé à l'élément
- exec
. Si vous êtes dans la situation où les
- utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
- d'un "livre d'or" par exemple, assurez-vous de désactiver cette
- fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
- la fonctionnalité exec
à l'aide de l'argument
+
Notez que cette fonctionnalité est très dangereuse, car elle va
+ permettre d'exécuter tout code associé à l'élément
+ exec
. Si vous êtes dans la situation où les
+ utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
+ d'un "livre d'or" par exemple, assurez-vous de désactiver cette
+ fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
+ la fonctionnalité exec
à l'aide de l'argument
IncludesNOEXEC
de la directive
Options
.
Outre l'affichage de contenu, les SSI d'Apache vous permettent de - définir des variables, et de les utiliser dans des comparaisons et + définir des variables, et de les utiliser dans des comparaisons et des conditions.
-Avec l'élément set
, vous pouvez définir des
- variables pour un usage ultérieur. Comme nous en aurons besoin plus
- loin, nous allons en parler tout de suite. La syntaxe se présente
+
Avec l'élément set
, vous pouvez définir des
+ variables pour un usage ultérieur. Comme nous en aurons besoin plus
+ loin, nous allons en parler tout de suite. La syntaxe se présente
comme suit :
Pour affecter une valeur à vos variables, en plus de la - définition littérale de l'exemple ci-dessus, vous pouvez utiliser +
Pour affecter une valeur à vos variables, en plus de la
+ définition littérale de l'exemple ci-dessus, vous pouvez utiliser
une autre variable, y compris les variables d'environnement, ou les variables
- décrites plus haut (comme LAST_MODIFIED
par exemple).
- Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
+ décrites plus haut (comme LAST_MODIFIED
par exemple).
+ Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
devez utiliser le symbole dollar ($) devant le nom de la
variable.
Pour insérer un caractère $ dans la valeur de votre variable, - vous devez l'échapper à l'aide d'un backslash.
+Pour insérer un caractère $ dans la valeur de votre variable, + vous devez l'échapper à l'aide d'un backslash.
Enfin, si vous voulez insérer une variable dans une chaîne, et +
Enfin, si vous voulez insérer une variable dans une chaîne, et s'il y a une chance pour que le nom de la variable se confonde avec - le reste de la chaîne, vous pouvez l'entourer d'accolades pour + le reste de la chaîne, vous pouvez l'entourer d'accolades pour eviter toute confusion (Il est difficile de trouver un bon exemple - pour illustrer ceci, mais j'espère que vous comprendrez).
+ pour illustrer ceci, mais j'espère que vous comprendrez).Maintenent que nous avons des variables, et que nous pouvons
- définir et comparer leurs valeurs, nous sommes à même de les
- utiliser dans des expressions conditionnelles. Ceci confère à SSI le
+ définir et comparer leurs valeurs, nous sommes à même de les
+ utiliser dans des expressions conditionnelles. Ceci confère à SSI le
statut de petit langage de programmation.
if
,
elif
, else
, endif
pour la
construction d'expressions conditionnelles, ce qui vous permet de
- générer plusieurs pages logiques à partir d'une seule vraie
+ générer plusieurs pages logiques à partir d'une seule vraie
page.
La structure de l'expression conditionnelle est :
@@ -451,14 +451,14 @@ HTML préexistants. <!--#endif -->Une condition peut revêtir la forme de toute comparaison +
Une condition peut revêtir la forme de toute comparaison
logique - soit une comparaison de valeurs avec une autre, soit une
- vérification de la "vérité" d'une valeur particulière (Une chaîne
- donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
- des opérateurs de comparaison disponibles, voir la documentation du
+ vérification de la "vérité" d'une valeur particulière (Une chaîne
+ donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
+ des opérateurs de comparaison disponibles, voir la documentation du
module
Par exemple, spour insérer l'heure du jour dans votre page web, +
Par exemple, spour insérer l'heure du jour dans votre page web, vous pouvez ajouter ces lignes dans la page HTML :
Toute autre variable (que vous avez définie, ou une variable - d'environnement normale) peut être utilisée dans les expressions +
Toute autre variable (que vous avez définie, ou une variable + d'environnement normale) peut être utilisée dans les expressions conditionnelles. Voir le document Expressions - rationnelles dans le serveur HTTP Apache pour plus de détails à - propos du fonctionnement du moteur d'évaluation des expressions + rationnelles dans le serveur HTTP Apache pour plus de détails à + propos du fonctionnement du moteur d'évaluation des expressions rationnelles.
-Associée à la possibilité avec Apache de définir - des variables d'environnement à l'aide de directives +
Associée à la possibilité avec Apache de définir
+ des variables d'environnement à l'aide de directives
SetEnvIf
, ainsi que d'autres directives en rapport,
- cette fonctionnalité vous permet d'ajouter une grande variété
- de contenus dynamiques côté serveur sans avoir à concevoir une
- application web de A à Z.
SSI ne remplace certainement pas CGI, ou d'autres technologies - utilisées pour la génération de pages web dynamiques. Mais c'est une - bonne méthode pour ajouter des petits contenus dynamiques à vos - pages, sans devoir fournir un gros effort supplémentaire.
+ utilisées pour la génération de pages web dynamiques. Mais c'est une + bonne méthode pour ajouter des petits contenus dynamiques à vos + pages, sans devoir fournir un gros effort supplémentaire.Ce document est un complément à la documentation de référence de +
Ce document est un complément à la documentation de référence de
Cette technique vous permet d'interdire à d'autres sites +
Cette technique vous permet d'interdire à d'autres sites d'inclure directement vos images dans leurs pages. On fait - souvent référence à cette pratique sous le nom de - référencement à chaud (Hotlinking) qui entraîne l'utilisation + souvent référence à cette pratique sous le nom de + référencement à chaud (Hotlinking) qui entraîne l'utilisation de votre bande passante pour servir des contenus faisant partie du site de quelqu'un d'autre.
Cette technique repose sur la valeur de la variable
optionnelle HTTP_REFERER
. Certaines personnes
pourront donc contourner cette limitation. Pour la plupart des
- utilisateurs cependant, la requête échouera, en ce sens que
- l'image ne sera pas affichée depuis le site tiers.
Il y a plusieurs manières de gérer cette situation.
+ utilisateurs cependant, la requête échouera, en ce sens que + l'image ne sera pas affichée depuis le site tiers. +Il y a plusieurs manières de gérer cette situation.
Dans le premier exemple, nous rejetons tout simplement la
- requête si elle ne provenait pas d'une page appartenant à notre
+ requête si elle ne provenait pas d'une page appartenant à notre
site. Pour les besoins de cet exemple, nous supposons que le nom
de votre site est www.example.com
.
Dans le second exemple, plutôt que de rejeter la requête, - nous affichons une autre image à la place.
+Dans le second exemple, plutôt que de rejeter la requête, + nous affichons une autre image à la place.
Dans le troisième exemple, nous redirigeons la requête vers - une image appartenant à un autre site.
+Dans le troisième exemple, nous redirigeons la requête vers + une image appartenant à un autre site.
De tous ces exemples, les deux derniers semblent les plus - efficaces pour faire en sorte que les gens arrêtent de - référencer vos images à chaud, car il ne verront pas les images - qu'ils s'attendent à voir.
+ efficaces pour faire en sorte que les gens arrêtent de + référencer vos images à chaud, car il ne verront pas les images + qu'ils s'attendent à voir.Si vous ne voulez pas rediriger la requête, mais - simplement interdire l'accès à la ressource, vous pouvez y +
Si vous ne voulez pas rediriger la requête, mais + simplement interdire l'accès à la ressource, vous pouvez y parvenir sans utiliser mod_rewrite :
- Dans cet exemple, nous allons discuter d'une méthode permettant - de bloquer les requêtes persistentes en provenance d'un robot + Dans cet exemple, nous allons discuter d'une méthode permettant + de bloquer les requêtes persistentes en provenance d'un robot particulier, ou d'un navigateur.
-La méthode classique pour exclure un robot consiste à définir
- un fichier, /robots.txt
qui spécifie les parties de
+
La méthode classique pour exclure un robot consiste à définir
+ un fichier, /robots.txt
qui spécifie les parties de
votre site web pour lesquelles vous voulez exclure les robots.
Malheureusement, certains robots ne tiennent pas compte de ces
fichiers.
Notez qu'il existe des méthodes d'exclusion qui n'utilisent +
Notez qu'il existe des méthodes d'exclusion qui n'utilisent
pas mod_rewrite. Notez aussi que toute technique qui repose sur
- le contenu de la chaîne client USER_AGENT
peut être
- contournée très facilement car cette chaîne peut être modifiée.
USER_AGENT
peut être
+ contournée très facilement car cette chaîne peut être modifiée.
On utilise un jeu de règles qui spécifie le répertoire à
- protéger, ainsi que la chaîne client USER_AGENT
qui
+
On utilise un jeu de règles qui spécifie le répertoire Ã
+ protéger, ainsi que la chaîne client USER_AGENT
qui
identifie le robot malin ou envahissant.
Dans cet exemple, nous bloquons un robot nommé
- Vilain_Robot
pour le répertoire
+
Dans cet exemple, nous bloquons un robot nommé
+ Vilain_Robot
pour le répertoire
/secret/fichiers
. Si vous voulez bloquer ce client
- seulement depuis une source particulière, vous pouvez aussi
- spécifier un intervalle d'adresses IP.
- Vous pouvez cependant parvenir au même résultat sans utiliser - mod_rewrite via la méthode alternative suivante : + Vous pouvez cependant parvenir au même résultat sans utiliser + mod_rewrite via la méthode alternative suivante :
- Comme indiqué plus haut, il est aisé de contourner cette
- technique, simplement en modifiant le contenu de l'en-tête
- USER_AGENT
. Si vous subissez une attaque en règle,
- vous allez devoir réfléchir à un blocage à un niveau supérieur,
- par exemple une règle de filtrage de votre pare-feu.
+ Comme indiqué plus haut, il est aisé de contourner cette
+ technique, simplement en modifiant le contenu de l'en-tête
+ USER_AGENT
. Si vous subissez une attaque en règle,
+ vous allez devoir réfléchir à un blocage à un niveau supérieur,
+ par exemple une règle de filtrage de votre pare-feu.
Nous voulons interdire l'accès à notre serveur aux clients - contenus dans une liste noire similaire à +
Nous voulons interdire l'accès à notre serveur aux clients
+ contenus dans une liste noire similaire Ã
hosts.deny
.
- La seconde condition RewriteCond présuppose que HostNameLookups est
- défini à On, de façon à ce que les adresses IP des clients puissent
- être résolues. Dans le cas contraire, vous devez supprimer la
+ La seconde condition RewriteCond présuppose que HostNameLookups est
+ défini à On, de façon à ce que les adresses IP des clients puissent
+ être résolues. Dans le cas contraire, vous devez supprimer la
seconde condition, ainsi que le drapeau [OR]
de la
- première.
+ première.
Redirige les requêtes en fonction du Referer de provenance de - la requête, avec des cibles différentes pour chaque Referer.
+Redirige les requêtes en fonction du Referer de provenance de + la requête, avec des cibles différentes pour chaque Referer.
Le jeu de règles suivant utilise un fichier de correspondances pour - associer chaque Referer à une cible de redirection.
+Le jeu de règles suivant utilise un fichier de correspondances pour + associer chaque Referer à une cible de redirection.
Le fichier de correspondances contient les cibles de - redirection associées à chaque Referer, ou, si nous voulons - simplement rediriger les requêtes vers leur Referer, un "-" est + redirection associées à chaque Referer, ou, si nous voulons + simplement rediriger les requêtes vers leur Referer, un "-" est inscrit dans le fichier de correspondances :