-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1673563:1741841 (outdated) -->
+<!-- English Revision: 1741841 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<title>Tutoriel du serveur HTTP Apache : fichiers .htaccess</title>
<summary>
-<p>Les fichiers <code>.htaccess</code> fournissent une méthode pour
-modifier la configuration du serveur au niveau de chaque répertoire.</p>
+<p>Les fichiers <code>.htaccess</code> fournissent une méthode pour
+modifier la configuration du serveur au niveau de chaque répertoire.</p>
</summary>
<section id="related"><title>Fichiers .htaccess</title>
</directivelist>
</related>
- <note>Les fichiers <code>.htaccess</code> ne doivent être utilisés
- que si vous n'avez pas accès au fichier de configuration du serveur
+ <note>Les fichiers <code>.htaccess</code> ne doivent être utilisés
+ que si vous n'avez pas accès au fichier de configuration du serveur
principal. L'utilisation des fichiers <code>.htaccess</code>
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 <code>.htaccess</code> dans une section <directive
module="core">Directory</directive>, car elles produiront le
- même effet avec de meilleures performances.</note>
+ même effet avec de meilleures performances.</note>
</section>
<section id="what">
<title>Que sont ce fichiers, comment les utiliser ?</title>
<p>Les fichiers <code>.htaccess</code> (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.</p>
+ 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.</p>
<note><title>Note :</title>
- <p>Si vous voulez donner un autre nom à votre fichier
+ <p>Si vous voulez donner un autre nom à votre fichier
<code>.htaccess</code>, vous pouvez le faire en utilisant la
directive <directive module="core">AccessFileName</directive>. Par
- exemple, si vous préférez nommer votre fichier
+ exemple, si vous préférez nommer votre fichier
<code>.config</code>, vous pouvez mettre ceci dans le fichier de
configuration de votre serveur :</p>
</highlight>
</note>
- <p>En général, les fichiers <code>.htaccess</code> utilisent la même
+ <p>En général, les fichiers <code>.htaccess</code> utilisent la même
syntaxe que les <a href="../configuring.html#syntax">fichiers de
configuration principaux</a>. Ce que vous pouvez mettre dans ces
- fichier est déterminé par la directive <directive
- module="core">AllowOverride</directive>. Cette directive spécifie,
- sous forme de catégories, quelles directives seront traitées si
+ fichier est déterminé par la directive <directive
+ module="core">AllowOverride</directive>. Cette directive spécifie,
+ sous forme de catégories, quelles directives seront traitées si
elles se trouvent dans un fichier <code>.htaccess</code>. Si une
directive est permise dans un fichier <code>.htaccess</code> file,
la documentation de cette directive contiendra une section Override,
- spécifiant quelle valeur doit prendre <directive
+ spécifiant quelle valeur doit prendre <directive
module="core">AllowOverride</directive> pour que cette directive
- soit traitée.</p>
+ soit traitée.</p>
<p>Par exemple, si vous regardez la documentation de la directive
<directive module="core">AddDefaultCharset</directive>, vous verrez
- que cette dernière est permise dans les fichiers
- <code>.htaccess</code> (Voir la ligne de contexte dans le résumé de
+ que cette dernière est permise dans les fichiers
+ <code>.htaccess</code> (Voir la ligne de contexte dans le résumé de
la directive). La ligne <a
href="../mod/directive-dict.html#Context">Override</a> indique
<code>FileInfo</code>. Vous devez donc avoir au moins
<code>AllowOverride FileInfo</code> pour que cette directive soit
- traitée dans les fichiers <code>.htaccess</code>.</p>
+ traitée dans les fichiers <code>.htaccess</code>.</p>
<example><title>Exemple :</title>
<table>
</table>
</example>
- <p>Si vous n'êtes pas sûr qu'une directive particulière soit permise
+ <p>Si vous n'êtes pas sûr qu'une directive particulière soit permise
dans un fichier <code>.htaccess</code>, lisez la documentation de
cette directive, et consultez la ligne de contexte pour
".htaccess".</p>
les fichiers .htaccess ?</title>
<p>En principe, vous ne devriez utiliser les fichiers
- <code>.htaccess</code> que lorsque vous n'avez pas accès au fichier de
+ <code>.htaccess</code> 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 <code>.htaccess</code> est très
- répandue. Il est aussi souvent avancé, ces dernières
- années, que les directives de <module>mod_rewrite</module> doivent
- être définies dans les fichiers <code>.htaccess</code>. Ceci est
+ être faite dans les fichiers <code>.htaccess</code> est très
+ répandue. Il est aussi souvent avancé, ces dernières
+ années, que les directives de <module>mod_rewrite</module> doivent
+ être définies dans les fichiers <code>.htaccess</code>. 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
- <code>mod_rewrite</code> 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
+ <code>mod_rewrite</code> fonctionneront mieux, à de nombreux égards,
dans le contexte du serveur principal.</p>
- <p>Les fichiers <code>.htaccess</code> 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
+ <p>Les fichiers <code>.htaccess</code> 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 <code>.htaccess</code>. 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.</p>
+ eux-mêmes leurs configurations.</p>
- <p>Cependant et d'une manière générale, il vaut mieux éviter
- d'utiliser les fichiers <code>.htaccess</code>. Tout élément de
+ <p>Cependant et d'une manière générale, il vaut mieux éviter
+ d'utiliser les fichiers <code>.htaccess</code>. Tout élément de
configuration que vous pourriez vouloir mettre dans un fichier
- <code>.htaccess</code>, peut aussi être mis, et avec la même
- efficacité, dans une section <directive module="core"
+ <code>.htaccess</code>, peut aussi être mis, et avec la même
+ efficacité, dans une section <directive module="core"
type="section">Directory</directive> du fichier de configuration de
votre serveur principal.</p>
- <p>Il y a deux raisons principales d'éviter l'utilisation des
+ <p>Il y a deux raisons principales d'éviter l'utilisation des
fichiers <code>.htaccess</code>.</p>
- <p>La première est liée aux performances. Lorsque la directive
- <directive module="core">AllowOverride</directive> est définie de
- façon à autoriser l'utilisation des fichiers <code>.htaccess</code>,
- httpd va rechercher leur présence dans chaque répertoire. Ainsi,
- permettre l'utilisation des fichiers <code>.htaccess</code> est déjà
- en soi une cause de dégradation des performances, que vous utilisiez
+ <p>La première est liée aux performances. Lorsque la directive
+ <directive module="core">AllowOverride</directive> est définie de
+ façon à autoriser l'utilisation des fichiers <code>.htaccess</code>,
+ httpd va rechercher leur présence dans chaque répertoire. Ainsi,
+ permettre l'utilisation des fichiers <code>.htaccess</code> est déjà
+ en soi une cause de dégradation des performances, que vous utilisiez
effectivement ces fichiers ou non ! De plus, le fichier
- <code>.htaccess</code> est chargé en mémoire chaque fois qu'un
- document fait l'objet d'une requête.</p>
+ <code>.htaccess</code> est chargé en mémoire chaque fois qu'un
+ document fait l'objet d'une requête.</p>
<p>Notez aussi que httpd doit rechercher les fichiers
- <code>.htaccess</code> 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 <a href="#how">comment sont
- appliquées les directives</a>). Ainsi, si un fichier fait l'objet
- d'une requête à partir d'un répertoire
+ <code>.htaccess</code> 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 <a href="#how">comment sont
+ appliquées les directives</a>). Ainsi, si un fichier fait l'objet
+ d'une requête à partir d'un répertoire
<code>/www/htdocs/exemple</code>, httpd doit rechercher les
fichiers suivants :</p>
/www/htdocs/exemple/.htaccess
</example>
- <p>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 <code>.htaccess</code>, même si
- aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
- se produire que si les fichiers <code>.htaccess</code> ont été
- autorisés pour le répertoire <code>/</code>, ce qui est rarement le
+ <p>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 <code>.htaccess</code>, même si
+ aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
+ se produire que si les fichiers <code>.htaccess</code> ont été
+ autorisés pour le répertoire <code>/</code>, ce qui est rarement le
cas.</p>
- <p>La seconde raison d'éviter l'utilisation des fichiers
- <code>.htaccess</code> est liée à la sécurité. Si vous permettez aux
+ <p>La seconde raison d'éviter l'utilisation des fichiers
+ <code>.htaccess</code> 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 <directive module="core">AllowOverride</directive> et
diriger les utilisateurs vers la documentation correspondante vous
- évitera bien des confusions ultérieures.</p>
+ évitera bien des confusions ultérieures.</p>
<p>Notez que mettre un fichier <code>.htaccess</code> contenant une
- directive dans un répertoire <code>/www/htdocs/exemple</code>
- revient exactement au même que mettre la même directive dans une
+ directive dans un répertoire <code>/www/htdocs/exemple</code>
+ revient exactement au même que mettre la même directive dans une
section Directory <code><Directory "/www/htdocs/exemple"></code>
du fichier de configuration de votre serveur principal :</p>
</example>
<p>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 <code>.htaccess</code>.</p>
+ 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 <code>.htaccess</code>.</p>
- <p>L'utilisation des fichiers <code>.htaccess</code> peut être
- entièrement désactivée en définissant la directive <directive
- module="core">AllowOverride</directive> à <code>none</code> :</p>
+ <p>L'utilisation des fichiers <code>.htaccess</code> peut être
+ entièrement désactivée en définissant la directive <directive
+ module="core">AllowOverride</directive> à <code>none</code> :</p>
<highlight language="config">AllowOverride None</highlight>
</section>
-<section id="how"><title>Comment sont appliquées les directives ?</title>
+<section id="how"><title>Comment sont appliquées les directives ?</title>
- <p>Les directives de configuration situées dans un fichier
- <code>.htaccess</code> s'appliquent au répertoire dans lequel ce
- fichier <code>.htaccess</code> se trouve, ainsi qu'à tous ses
- sous-répertoires. Cependant, il est important de garder à l'esprit
+ <p>Les directives de configuration situées dans un fichier
+ <code>.htaccess</code> s'appliquent au répertoire dans lequel ce
+ fichier <code>.htaccess</code> se trouve, ainsi qu'à tous ses
+ sous-répertoires. Cependant, il est important de garder à l'esprit
qu'il peut y avoir des fichiers <code>.htaccess</code> 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 <code>.htaccess</code> situé dans un
- répertoire particulier peuvent écraser les directives se trouvant
- dans des fichiers <code>.htaccess</code> 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
- <code>.htaccess</code> 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 <code>.htaccess</code> situé dans un
+ répertoire particulier peuvent écraser les directives se trouvant
+ dans des fichiers <code>.htaccess</code> 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
+ <code>.htaccess</code> situé à un niveau encore plus haut, ou dans
le fichier de configuration du serveur principal.</p>
<p>Exemple :</p>
- <p>Dans le répertoire <code>/www/htdocs/exemple1</code> se trouve un
+ <p>Dans le répertoire <code>/www/htdocs/exemple1</code> se trouve un
fichier <code>.htaccess</code> contenant ce qui suit :</p>
<highlight language="config">Options +ExecCGI</highlight>
- <p>Note : "<code>AllowOverride Options</code>" doit être présent
+ <p>Note : "<code>AllowOverride Options</code>" doit être présent
pour permettre l'utilisation de la directive "<directive
module="core">Options</directive>" dans les fichiers
<code>.htaccess</code>.</p>
- <p>Dans le répertoire <code>/www/htdocs/exemple1/exemple2</code> se
+ <p>Dans le répertoire <code>/www/htdocs/exemple1/exemple2</code> se
trouve un fichier <code>.htaccess</code> contenant ce qui suit
:</p>
<highlight language="config">Options Includes</highlight>
- <p>Ainsi, à cause de ce second fichier <code>.htaccess</code> du
- répertoire <code>/www/htdocs/exemple1/exemple2</code>, l'exécution
- des CGI est interdite, car la dernière définition d'options
- <code>Options Includes</code> écrase toute autre définition
- d'options d'un fichier <code>.htaccess</code> situé dans un
- répertoire de niveau supérieur.</p>
+ <p>Ainsi, à cause de ce second fichier <code>.htaccess</code> du
+ répertoire <code>/www/htdocs/exemple1/exemple2</code>, l'exécution
+ des CGI est interdite, car la dernière définition d'options
+ <code>Options Includes</code> écrase toute autre définition
+ d'options d'un fichier <code>.htaccess</code> situé dans un
+ répertoire de niveau supérieur.</p>
<section id="merge"><title>Interactions entre les fichiers .htaccess
et les fichiers de configuration du serveur principal</title>
- <p>Comme indiqué dans la documentation sur les <a
+ <p>Comme indiqué dans la documentation sur les <a
href="../sections.html">Sections de configuration</a>, les fichiers
- <code>.htaccess</code> peuvent écraser les directives des sections
+ <code>.htaccess</code> peuvent écraser les directives des sections
<directive type="section" module="core">Directory</directive> pour
- le répertoire correspondant, mais peuvent eux-mêmes être écrasés
+ le répertoire correspondant, mais peuvent eux-mêmes être écrasés
par d'autres types de sections des fichiers de la
- configuration principale. Cette possibilité peut s'avérer utile pour
- forcer certaines configurations, même en cas de présence de l'option
- libérale <directive module="core">AllowOverride</directive>. Par
- exemple, pour interdire l'exécution de scripts en autorisant la
- définition de toute autre option dans les fichiers
+ configuration principale. Cette possibilité peut s'avérer utile pour
+ forcer certaines configurations, même en cas de présence de l'option
+ libérale <directive module="core">AllowOverride</directive>. Par
+ exemple, pour interdire l'exécution de scripts en autorisant la
+ définition de toute autre option dans les fichiers
<code>.htaccess</code>, vous pouvez utiliser :</p>
<highlight language="config">
</Directory>
<Location "/">
- Options +IncludesNoExec -ExecCGI<br />
+ Options +IncludesNoExec -ExecCGI
</Location>
</highlight>
- <note>Dans cet exemple, on considère que le chemin défini par la
+ <note>Dans cet exemple, on considère que le chemin défini par la
directive <directive module="core">DocumentRoot</directive> est
<code>/www/htdocs</code>.</note>
</section>
<section id="auth"><title>Exemple d'authentification</title>
- <p>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 <code>.htaccess</code> pour implémenter
+ <p>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 <code>.htaccess</code> 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 <directive module="core"
type="section">Directory</directive> du fichier de configuration de
votre serveur principal, et les fichiers <code>.htaccess</code> 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 <a
href="#when">ci-dessus</a> pour savoir dans quels cas vous devez ou
ne devez pas utiliser les fichiers <code>.htaccess</code>.</p>
- <p>Ceci étant dit, si vous pensez que vous devez quand-même utiliser
+ <p>Ceci étant dit, si vous pensez que vous devez quand-même utiliser
un fichier <code>.htaccess</code>, vous pouvez utiliser la
configuration suivante :</p>
Require group admins
</highlight>
- <p>Notez que <code>AllowOverride AuthConfig</code> doit être présent
+ <p>Notez que <code>AllowOverride AuthConfig</code> doit être présent
pour que ces directives produisent leur effet.</p>
- <p>Vous pouvez vous référer au <a href="auth.html">tutoriel sur
- l'authentification</a> pour une description plus détaillée de
+ <p>Vous pouvez vous référer au <a href="auth.html">tutoriel sur
+ l'authentification</a> pour une description plus détaillée de
l'authentification et de l'autorisation.</p>
</section>
-<section id="ssi"><title>Exemple d'Inclusion Côté Serveur (Server Side
+<section id="ssi"><title>Exemple d'Inclusion Côté Serveur (Server Side
Includes - SSI)</title>
<p>Les fichiers <code>.htaccess</code> 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 <code>.htaccess</code> enregistré dans le
- répertoire considéré :</p>
+ placées dans un fichier <code>.htaccess</code> enregistré dans le
+ répertoire considéré :</p>
<highlight language="config">
Options +Includes
</highlight>
<p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
- FileInfo</code> doivent être tous les deux présents pour que ces
+ FileInfo</code> doivent être tous les deux présents pour que ces
directives puissent produire leur effet.</p>
- <p>Vous pouvez vous référer au <a href="ssi.html">tutoriel SSI</a>
- pour une description plus détaillée des SSI.</p>
+ <p>Vous pouvez vous référer au <a href="ssi.html">tutoriel SSI</a>
+ pour une description plus détaillée des SSI.</p>
</section>
-<section id="rewrite"><title>Les règles de réécriture dans les fichiers .htaccess</title>
+<section id="rewrite"><title>Les règles de réécriture dans les fichiers .htaccess</title>
<p>Sivous utilisez des directives <directive
module="mod_rewrite">RewriteRule</directive> dans un fichier
-<code>.htaccess</code>, 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
+<code>.htaccess</code>, 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 :</p>
<highlight language="config">
# Dans httpd.conf
RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
-# Dans un fichier .htaccess situé dans le répertoire racine de vos
+# Dans un fichier .htaccess situé dans le répertoire racine de vos
# documents
RewriteRule "^images/(.+)\.jpg" "images/$1.png"
-# Dans un fichier .htaccess situé dans le répertoire images/
+# Dans un fichier .htaccess situé dans le répertoire images/
RewriteRule "^(.+)\.jpg" "$1.png"
</highlight>
-<p>On voit que si le fichier <code>.htaccess</code> 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 <directive
+<p>On voit que si le fichier <code>.htaccess</code> 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 <directive
module="mod_rewrite">RewriteRule</directive>, et que si le fichier
-<code>.htaccess</code> se situe dans le répertoire <code>images</code>,
-la chaîne <code>/images/</code> disparaît de cette même valeur de
-remplacement. Il doit donc en être de même dans votre expression
+<code>.htaccess</code> se situe dans le répertoire <code>images</code>,
+la chaîne <code>/images/</code> disparaît de cette même valeur de
+remplacement. Il doit donc en être de même dans votre expression
rationnelle.</p>
-<p>Veuillez vous référer à cette <a href="../rewrite/">documentation</a>
-pour une étude détaillée de l'utilisation du module
+<p>Veuillez vous référer à cette <a href="../rewrite/">documentation</a>
+pour une étude détaillée de l'utilisation du module
<code>mod_rewrite</code>.</p>
</section>
<section id="cgi"><title>Exemple de CGI</title>
- <p>En fin de compte, vous avez décidé d'utiliser un fichier
- <code>.htaccess</code> pour permettre l'exécution des programmes CGI
- dans un répertoire particulier. Pour y parvenir, vous pouvez
+ <p>En fin de compte, vous avez décidé d'utiliser un fichier
+ <code>.htaccess</code> pour permettre l'exécution des programmes CGI
+ dans un répertoire particulier. Pour y parvenir, vous pouvez
utiliser la configuration suivante :</p>
<highlight language="config">
</highlight>
<p>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 :</p>
<highlight language="config">
</highlight>
<p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
- FileInfo</code> doivent être tous les deux présents pour que ces
+ FileInfo</code> doivent être tous les deux présents pour que ces
directives puissent produire leur effet.</p>
- <p>Vous pouvez vous référer au <a href="cgi.html">tutoriel CGI</a>
- pour une description plus détaillée de la configuration et de la
+ <p>Vous pouvez vous référer au <a href="cgi.html">tutoriel CGI</a>
+ pour une description plus détaillée de la configuration et de la
proprammation CGI.</p>
</section>
-<section id="troubleshoot"><title>Résolution des problèmes</title>
+<section id="troubleshoot"><title>Résolution des problèmes</title>
- <p>De nombreuses raisons peuvent être à l'origine du fait que
+ <p>De nombreuses raisons peuvent être à l'origine du fait que
les directives que vous avez mises dans un fichier
- <code>.htaccess</code> ne produisent pas l'effet désiré.</p>
+ <code>.htaccess</code> ne produisent pas l'effet désiré.</p>
- <p>Le plus souvent, le problème vient du fait que la définition de
+ <p>Le plus souvent, le problème vient du fait que la définition de
la directive <directive module="core">AllowOverride</directive>
ne permet pas l'activation des directives de votre fichier
- <code>.htaccess</code>. Vérifiez si une directive
- <code>AllowOverride None</code> 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 <code>.htaccess</code>
- et de recharger la page. Si aucune erreur n'est générée par le
+ <code>.htaccess</code>. Vérifiez si une directive
+ <code>AllowOverride None</code> 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 <code>.htaccess</code>
+ et de recharger la page. Si aucune erreur n'est générée par le
serveur, il est pratiquement certain qu'une directive
- <code>AllowOverride None</code> affecte votre répertoire.</p>
+ <code>AllowOverride None</code> affecte votre répertoire.</p>
<p>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 <code>.htaccess</code> n'est pas
+ utilisée dans votre fichier <code>.htaccess</code> n'est pas
permise.</p>
<example>
</example>
<p>Cela signifie soit que vous utilisez une directive qui n'est
jamais permise dans les fichiers <code>.htaccess</code>, soit
- que vous n'avez tout simplement pas défini la directive
- <directive module="core">AllowOverride</directive> à un niveau
+ que vous n'avez tout simplement pas défini la directive
+ <directive module="core">AllowOverride</directive> à un niveau
suffisant pour la directive que vous utilisez. Consultez la
- documentation de cette directive pour déterminer quel cas
+ documentation de cette directive pour déterminer quel cas
s'applique.</p>
<p>Le journal des erreurs peut aussi vous signaler une erreur de
- syntaxe dans l'usage de la directive elle-même.</p>
+ syntaxe dans l'usage de la directive elle-même.</p>
<example>
[Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
</example>
- <p>Dans ce cas, le message d'erreur sera spécifique à l'erreur
+ <p>Dans ce cas, le message d'erreur sera spécifique à l'erreur
de syntaxe que vous avez commise.</p>
</section>
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1673563:1741841 (outdated) -->
+<!-- English Revision: 1741841 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<manualpage metafile="public_html.xml.meta">
<parentdocument href="./">Recettes et tutoriels</parentdocument>
- <title>Répertoires web utilisateurs</title>
+ <title>Répertoires web utilisateurs</title>
<summary>
-<p>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
+<p>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 <directive module="mod_userdir">UserDir</directive>. Les
visiteurs de l'URL <code>http://example.com/~nom_utilisateur/</code>
-recevront un contenu situé dans le répertoire home de l'utilisateur
-"<code>nom_utilisateur</code>", et dans le sous-répertoire spécifié par
+recevront un contenu situé dans le répertoire home de l'utilisateur
+"<code>nom_utilisateur</code>", et dans le sous-répertoire spécifié par
la directive <directive module="mod_userdir">UserDir</directive>.</p>
-<p>Notez que par défaut, l'accès à ces répertoires n'est
-<strong>pas</strong> permis. Vous pouvez en permettre l'accès à l'aide
+<p>Notez que par défaut, l'accès à ces répertoires n'est
+<strong>pas</strong> permis. Vous pouvez en permettre l'accès à l'aide
de la directive <directive module="mod_userdir">UserDir</directive> en
-décommentant la ligne</p>
+décommentant la ligne</p>
<example>
#Include conf/extra/httpd-userdir.conf
</example>
- <p>dans le fichier de configuration par défaut
+ <p>dans le fichier de configuration par défaut
<code>conf/httpd.conf</code>, et en adaptant le
fichier <code>httpd-userdir.conf</code> selon vos besoins, ou en
- incluant les directives appropriées dans une section
+ incluant les directives appropriées dans une section
<code>Directory</code> du fichier de configuration principal.</p>
</summary>
<seealso><a href="../urlmapping.html">Mise en correspondance des URLs
-avec le système de fichiers</a></seealso>
+avec le système de fichiers</a></seealso>
<section id="related">
- <title>Répertoires web utilisateurs</title>
+ <title>Répertoires web utilisateurs</title>
<related>
<modulelist>
<module>mod_userdir</module>
</section>
<section id="userdir">
- <title>Définition du chemin des fichiers avec UserDir</title>
+ <title>Définition du chemin des fichiers avec UserDir</title>
<p>La directive <directive module="mod_userdir">UserDir</directive>
- permet de spécifier un répertoire à partir duquel le contenu de
- l'utilisateur pourra être chargé. Elle peut revêtir plusieurs
+ permet de spécifier un répertoire à partir duquel le contenu de
+ l'utilisateur pourra être chargé. Elle peut revêtir plusieurs
formes.</p>
- <p>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 :</p>
+ <p>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 :</p>
<highlight language="config">UserDir public_html</highlight>
correspondra au chemin fichier
<code>/home/rbowen/public_html/fichier.html</code></p>
- <p>Si le chemin spécifié commence par un slash, le chemin du fichier
+ <p>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 :</p>
+ considéré. Par exemple, avec cette configuration :</p>
<highlight language="config">UserDir /var/html</highlight>
correspondra au chemin fichier
<code>/var/html/rbowen/fichier.html</code></p>
- <p>Si le chemin spécifié contient un astérisque (*), ce dernier sera
- remplacé par le nom de l'utilisateur dans le chemin du fichier
+ <p>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 :</p>
<highlight language="config">UserDir /var/www/*/docs</highlight>
correspondra au chemin fichier
<code>/var/www/rbowen/docs/fichier.html</code></p>
- <p>On peut aussi définir plusieurs répertoires ou chemins de
- répertoires.</p>
+ <p>On peut aussi définir plusieurs répertoires ou chemins de
+ répertoires.</p>
<highlight language="config">UserDir public_html /var/html</highlight>
<section id="redirect">
<title>Redirection vers des URLs externes</title>
<p>On peut utiliser la directive <directive
- module="mod_userdir">UserDir</directive> pour rediriger les requêtes
- relatives aux répertoires utilisateurs vers des URLs externes.</p>
+ module="mod_userdir">UserDir</directive> pour rediriger les requêtes
+ relatives aux répertoires utilisateurs vers des URLs externes.</p>
<highlight language="config">UserDir http://example.org/users/*/</highlight>
- <p>L'exemple ci-dessus va rediriger une requête pour
+ <p>L'exemple ci-dessus va rediriger une requête pour
<code>http://example.com/~bob/abc.html</code> vers
<code>http://exemple.org/users/bob/abc.html</code>.</p>
</section>
<section id="enable">
- <title>Définition de la liste des utilisateurs autorisés à utiliser
- cette fonctionnalité</title>
+ <title>Définition de la liste des utilisateurs autorisés à utiliser
+ cette fonctionnalité</title>
- <p>En suivant la syntaxe décrite dans la documentation de UserDir,
- vous pouvez définir quels utilisateurs sont autorisés à utiliser
- cette fonctionnalité :</p>
+ <p>En suivant la syntaxe décrite dans la documentation de UserDir,
+ vous pouvez définir quels utilisateurs sont autorisés à utiliser
+ cette fonctionnalité :</p>
<highlight language="config">UserDir disabled root jro fish</highlight>
<p>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 <code>disabled</code>. 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 <code>disabled</code>. 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 :</p>
<highlight language="config">
- UserDir disabled<br />
- UserDir enabled rbowen krietz
+UserDir disabled
+UserDir enabled rbowen krietz
</highlight>
<p>Vous trouverez d'autres exemples dans la documentation de
</section>
<section id="cgi">
- <title>Définition d'un répertoire CGI pour chaque utilisateur</title>
+ <title>Définition d'un répertoire CGI pour chaque utilisateur</title>
- <p>Afin de réserver un répertoire cgi-bin pour chaque utilisateur,
+ <p>Afin de réserver un répertoire cgi-bin pour chaque utilisateur,
vous pouvez utiliser une section <directive module="core"
type="section">Directory</directive> pour activer CGI dans un
- sous-répertoire particulier d'un répertoire home utilisateur.</p>
+ sous-répertoire particulier d'un répertoire home utilisateur.</p>
<highlight language="config">
<Directory "/home/*/public_html/cgi-bin/">
</highlight>
<p>Avec la configuration ci-dessus, et en supposant que
- <code>UserDir</code> est défini à <code>public_html</code>, un
- programme CGI <code>exemple.cgi</code> pourra être chargé depuis ce
- répertoire en passant par l'URL :</p>
+ <code>UserDir</code> est défini à <code>public_html</code>, un
+ programme CGI <code>exemple.cgi</code> pourra être chargé depuis ce
+ répertoire en passant par l'URL :</p>
<example>
http://example.com/~rbowen/cgi-bin/exemple.cgi
<p>Si vous voulez que vos utilisateurs puissent modifier la
configuration du serveur pour ce qui concerne leur espace web, ils
devront utiliser des fichiers <code>.htaccess</code> pour effectuer
- ces modifications. Assurez-vous d'avoir défini la directive
- <directive module="core">AllowOverride</directive> à une valeur
- appropriée pour les directives dont vous voulez permettre la
+ ces modifications. Assurez-vous d'avoir défini la directive
+ <directive module="core">AllowOverride</directive> à une valeur
+ appropriée pour les directives dont vous voulez permettre la
modification aux utilisateurs. Voir le <a
- href="htaccess.html">tutoriel .htaccess</a> pour plus de détails sur
- la manière dont tout ceci fonctionne.</p>
+ href="htaccess.html">tutoriel .htaccess</a> pour plus de détails sur
+ la manière dont tout ceci fonctionne.</p>
</section>
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1646393:1741841 (outdated) -->
+<!-- English Revision: 1741841 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<manualpage metafile="ssi.xml.meta">
<parentdocument href="./">Recettes et tutoriels</parentdocument>
-<title>Tutoriel Apache httpd : Introduction aux "Inclusions Côté Serveur"
+<title>Tutoriel Apache httpd : Introduction aux "Inclusions Côté Serveur"
(Server Side Includes - SSI)</title>
<summary>
-<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
-HTML préexistants.</p>
+<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
+HTML préexistants.</p>
</summary>
<section id="related"><title>Introduction</title>
</directivelist>
</related>
- <p>Cet article traite des Inclusions Côté Serveur (Server Side
- Includes), plus communément appelés SSI. Vous trouverez ici la
- manière de configurer votre serveur pour permettre les SSI, ainsi
- qu'une introduction à quelques techniques SSI de base permettant
- d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
+ <p>Cet article traite des Inclusions Côté Serveur (Server Side
+ Includes), plus communément appelés SSI. Vous trouverez ici la
+ manière de configurer votre serveur pour permettre les SSI, ainsi
+ qu'une introduction à quelques techniques SSI de base permettant
+ d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
- <p>La dernière partie de cet article sera consacrée aux
- configurations SSI plus avancées, telles que les expressions
+ <p>La dernière partie de cet article sera consacrée aux
+ configurations SSI plus avancées, telles que les expressions
conditionnelles dans les directives SSI.</p>
</section>
<section id="what"><title>Qu'est-ce que SSI ?</title>
- <p>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
+ <p>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.</p>
- <p>Par exemple, vous pouvez insérer la directive suivante dans une
+ <p>Par exemple, vous pouvez insérer la directive suivante dans une
page HTML existante :</p>
<example>
<!--#echo var="DATE_LOCAL" -->
</example>
- <p>Ainsi, lorsque la page sera servie, la directive sera évaluée et
- remplacée par sa valeur :</p>
+ <p>Ainsi, lorsque la page sera servie, la directive sera évaluée et
+ remplacée par sa valeur :</p>
<example>
Tuesday, 15-Jan-2013 19:28:54 EST
</example>
- <p>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
+ <p>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.</p>
</section>
Options +Includes
</highlight>
- <p>Cette directive indique à Apache que vous désirez permettre la
- recherche de directives SSI lors de l'interprétation des fichiers.
+ <p>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 <directive module="core">Options</directive>
- qui peuvent s'écraser les unes les autres. Vous devrez probablement
- appliquer ces directives <code>Options</code> au répertoire
- spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
- qu'elles y seront bien activées.</p>
+ qui peuvent s'écraser les unes les autres. Vous devrez probablement
+ appliquer ces directives <code>Options</code> au répertoire
+ spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
+ qu'elles y seront bien activées.</p>
<p>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
- <code>.shtml</code>, à l'aide des directives suivantes :</p>
+ directives SSI. Vous devez indiquer à Apache quels fichiers seront
+ concernés. Vous pouvez y parvenir en indiquant une extension, comme
+ <code>.shtml</code>, à l'aide des directives suivantes :</p>
<highlight language="config">
- AddType text/html .shtml<br />
- AddOutputFilter INCLUDES .shtml
+AddType text/html .shtml
+AddOutputFilter INCLUDES .shtml
</highlight>
- <p>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
+ <p>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
- <code>.shtml</code>, condition nécessaire pour que les directives
- SSI qu'elle contient soient traitées.</p>
+ contient, de façon à ce qu'elle possède l'extension
+ <code>.shtml</code>, condition nécessaire pour que les directives
+ SSI qu'elle contient soient traitées.</p>
- <p>Une autre méthode consiste à utiliser la directive <directive
+ <p>Une autre méthode consiste à utiliser la directive <directive
module="mod_include">XBitHack</directive> :</p>
<highlight language="config">
XBitHack on
</highlight>
<p>La directive <directive module="mod_include">XBitHack</directive>
- indique à Apache qu'il doit rechercher des directivves SSI dans les
- fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
- nécessaire de changer le nom du fichier pour ajouter des directives
- SSI à une page préexistante ; vous devez simplement attribuer les
- droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
+ indique à Apache qu'il doit rechercher des directivves SSI dans les
+ fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
+ nécessaire de changer le nom du fichier pour ajouter des directives
+ SSI à une page préexistante ; vous devez simplement attribuer les
+ droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
<example>
chmod +x pagename.html
</example>
<p>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
- <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
+ <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
pas entendu parler de la directive <directive
module="mod_include">XBitHack</directive>. En effet, vous devez
- garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
- des directives SSI dans chaque fichier qu'il sert, même s'il n'en
- contient aucune. Ce n'est donc pas une bonne idée car les
- performances peuvent en être sensiblement affectées.</p>
+ garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
+ des directives SSI dans chaque fichier qu'il sert, même s'il n'en
+ contient aucune. Ce n'est donc pas une bonne idée car les
+ performances peuvent en être sensiblement affectées.</p>
- <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
+ <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
positionner, ce qui limite un peu vos choix.</p>
- <p>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 à
+ <p>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 :</p>
+ 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 :</p>
<ol>
<li>Utilisez la configuration <code>XBitHack Full</code>. 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.</li>
<li>Utilisez les directives fournies par le module
- <module>mod_expires</module> pour définir de manière explicite la
- date d'expiration de vos fichiers, laissant par la-même
- aux navigateurs et aux mandataires le soin de déterminer s'il est
+ <module>mod_expires</module> pour définir de manière explicite la
+ date d'expiration de vos fichiers, laissant par la-même
+ aux navigateurs et aux mandataires le soin de déterminer s'il est
opportun ou non de les mettre en cache.</li>
</ol>
</section>
<!--#fonction attribut=valeur attribut=valeur ... -->
</example>
- <p>Le format d'une directive SSI étant similaire à celui d'un
- commentaire HTML, si vous n'avez pas activé correctement SSI, le
+ <p>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.</p>
+ HTML. Si SSI est correctement configuré, la directive sera remplacée
+ par ses résultats.</p>
- <p>"fonction" peut prendre de nombreuses formes, et nous décrirons
- plus précisément la plupart d'entre eux dans la prochaine version de
+ <p>"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.</p>
<p>La fonction <code>echo</code> 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 <code>set</code>.</p>
+ les programmes CGI. De plus, vous pouvez définir vos propres
+ variables à l'aide de la fonction <code>set</code>.</p>
<p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
pouvez utiliser la fonction <code>config</code> avec un attribut
<section id="lastmodified"><title>Date de modification du fichier</title>
<example>
- Dernière modification du document <!--#flastmod file="index.html" -->
+ Dernière modification du document <!--#flastmod file="index.html" -->
</example>
- <p>Le format peut là aussi être modifié à l'aide de l'attribut
+ <p>Le format peut là aussi être modifié à l'aide de l'attribut
<code>timefmt</code>.</p>
</section>
-<section id="cgi"><title>Inclusion des résultats d'un programme CGI</title>
+<section id="cgi"><title>Inclusion des résultats d'un programme CGI</title>
<p>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".</p>
+ résultats d'un programme CGI, comme l'universellement adoré
+ "compteur d'accès".</p>
<example>
<!--#include virtual="/cgi-bin/counter.pl" -->
<section id="additionalexamples">
<title>Exemples additionnels</title>
- <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
+ <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
ce que vous pouvez faire de vos documents HTML avec SSI.</p>
-<section id="docmodified"><title>Quand ce document a-t-il été modifié ?</title>
+<section id="docmodified"><title>Quand ce document a-t-il été modifié ?</title>
- <p>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.</p>
+ <p>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.</p>
<example>
<!--#config timefmt="%A %B %d, %Y" --><br />
- Dernière modification du fichier <!--#flastmod file="ssi.shtml" -->
+ Dernière modification du fichier <!--#flastmod file="ssi.shtml" -->
</example>
<p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> 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 <code>LAST_MODIFIED</code> :</p>
<example>
<!--#config timefmt="%D" --><br />
This file last modified <!--#echo var="LAST_MODIFIED" -->
</example>
- <p>Pour plus de détails sur le format <code>timefmt</code>, tapez
- <code>strftime</code> dans votre moteur de recherche préferé. La
+ <p>Pour plus de détails sur le format <code>timefmt</code>, tapez
+ <code>strftime</code> dans votre moteur de recherche préferé. La
syntaxe est identique.</p>
</section>
<section id="standard-footer">
<title>Inclusion d'un pied de page standard</title>
- <p>Si le site que vous gérez comporte plus que quelques pages, vous
+ <p>Si le site que vous gérez comporte plus que quelques pages, vous
allez vite vous apercevoir qu'effectuer des modifications sur toutes
- ces pages peut devenir très contraignant, en particulier si vous
- voulez qu'elles conservent un aspect homogène.</p>
+ ces pages peut devenir très contraignant, en particulier si vous
+ voulez qu'elles conservent un aspect homogène.</p>
- <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
- simplifier cette corvée de mises à jour. Il vous suffit de
+ <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
+ simplifier cette corvée de mises à jour. Il vous suffit de
confectionner un fichier de pied de page, et de l'inclure dans
- chaque page à l'aide de l'élément SSI <code>include</code>. Pour
- définir le fichier à inclure, la fonction <code>include</code> peut
+ chaque page à l'aide de l'élément SSI <code>include</code>. Pour
+ définir le fichier à inclure, la fonction <code>include</code> peut
utiliser soit l'attribut <code>file</code>, soit l'attribut
<code>virtual</code>. L'attribut <code>file</code> est un chemin de
- fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il
- ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
+ fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il
+ ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
comporter "../" dans son chemin. L'attribut <code>virtual</code> est
- probablement plus commode, et peut spécifier une URL relative au
+ probablement plus commode, et peut spécifier une URL relative au
document servi. Elle peut commencer par un /, mais le fichier inclus
- et le fichier servi doivent résider sur le même serveur.</p>
+ et le fichier servi doivent résider sur le même serveur.</p>
<example>
<!--#include virtual="/footer.html" -->
</example>
<p>Je combinerai souvent ces deux derniers points, en ajoutant une
directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
- destiné à être inclus. Le fichier inclus peut contenir des
- directives SSI, et les inclusions peuvent être imbriquées - à
+ destiné à être inclus. Le fichier inclus peut contenir des
+ directives SSI, et les inclusions peuvent être imbriquées - à
savoir, le fichier inclus peut inclure un autre fichier, etc...</p>
</section>
<section id="config">
<title>Que puis-je configurer d'autre ?</title>
- <p>En plus du format de date, vous pouvez utiliser l'élément
+ <p>En plus du format de date, vous pouvez utiliser l'élément
<code>config</code> pour configurer deux autres choses.</p>
- <p>En général, lorsque quelque chose se passe mal avec votre
+ <p>En général, lorsque quelque chose se passe mal avec votre
directive SSI, vous recevez le message :</p>
<example>
[an error occurred while processing this directive]
</example>
<p>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 ?)</p>
<p>Vous pouvez aussi modifier le format sous lequel les tailles de
- fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.
- Vous pouvez spécifier <code>bytes</code> pour un affichage en
+ fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.
+ Vous pouvez spécifier <code>bytes</code> pour un affichage en
octets, ou <code>abbrev</code> pour un affichage plus concis en Ko
ou Mo, selon le cas.</p>
</section>
<section id="exec">
- <title>Exécution de commandes</title>
+ <title>Exécution de commandes</title>
- <p>J'ai pour projet, dans les prochains mois, d'écrire un article à
+ <p>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
- <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
- par SSI en utilisant le shell (<code>/bin/sh</code>, 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.</p>
+ <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
+ par SSI en utilisant le shell (<code>/bin/sh</code>, 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.</p>
<example>
<pre><br />
<!--#exec cmd="ls" --><br />
</pre>
</example>
- <p>Vous noterez probablement l'étrange formatage provoqué par cette
+ <p>Vous noterez probablement l'étrange formatage provoqué par cette
directive sous Windows, car la sortie de <code>dir</code> contient
- la chaîne de caractères "<<code>dir</code>>", ce qui trompe le
+ la chaîne de caractères "<<code>dir</code>>", ce qui trompe le
navigateur.</p>
- <p>Notez que cette fonctionnalité est très dangereuse, car elle va
- permettre d'exécuter tout code associé à l'élément
- <code>exec</code>. 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é <code>exec</code> à l'aide de l'argument
+ <p>Notez que cette fonctionnalité est très dangereuse, car elle va
+ permettre d'exécuter tout code associé à l'élément
+ <code>exec</code>. 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é <code>exec</code> à l'aide de l'argument
<code>IncludesNOEXEC</code> de la directive
<code>Options</code>.</p>
</section>
<section id="advanced">
-<title>Techniques SSI avancées</title>
+<title>Techniques SSI avancées</title>
<p>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.</p>
-<section id="variables"><title>Définition de variables</title>
+<section id="variables"><title>Définition de variables</title>
- <p>Avec l'élément <code>set</code>, 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
+ <p>Avec l'élément <code>set</code>, 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 :</p>
<example>
<!--#set var="name" value="Rich" -->
</example>
- <p>Pour affecter une valeur à vos variables, en plus de la
- définition littérale de l'exemple ci-dessus, vous pouvez utiliser
+ <p>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 <a
href="../env.html">variables d'environnement</a>, ou les variables
- décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
- Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
+ décrites plus haut (comme <code>LAST_MODIFIED</code> 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.</p>
<example> <!--#set var="modified" value="$LAST_MODIFIED" -->
</example>
- <p>Pour insérer un caractère $ dans la valeur de votre variable,
- vous devez l'échapper à l'aide d'un backslash.</p>
+ <p>Pour insérer un caractère $ dans la valeur de votre variable,
+ vous devez l'échapper à l'aide d'un backslash.</p>
<example>
<!--#set var="cost" value="\$100" -->
</example>
- <p>Enfin, si vous voulez insérer une variable dans une chaîne, et
+ <p>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).</p>
+ pour illustrer ceci, mais j'espère que vous comprendrez).</p>
<example>
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
</example>
<title>Expressions conditionnelles</title>
<p>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.
<module>mod_include</module> fournit une structure <code>if</code>,
<code>elif</code>, <code>else</code>, <code>endif</code> 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.</p>
<p>La structure de l'expression conditionnelle est :</p>
<!--#endif -->
</example>
- <p>Une <em>condition</em> peut revêtir la forme de toute comparaison
+ <p>Une <em>condition</em> 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 <module>mod_include</module>.</p>
- <p>Par exemple, spour insérer l'heure du jour dans votre page web,
+ <p>Par exemple, spour insérer l'heure du jour dans votre page web,
vous pouvez ajouter ces lignes dans la page HTML :</p>
<example>
<!--#endif --><br />
</example>
- <p>Toute autre variable (que vous avez définie, ou une variable
- d'environnement normale) peut être utilisée dans les expressions
+ <p>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 <a href="../expr.html">Expressions
- rationnelles dans le serveur HTTP Apache</a> pour plus de détails à
- propos du fonctionnement du moteur d'évaluation des expressions
+ rationnelles dans le serveur HTTP Apache</a> pour plus de détails à
+ propos du fonctionnement du moteur d'évaluation des expressions
rationnelles.</p>
- <p>Associée à la possibilité avec Apache de définir
- des variables d'environnement à l'aide de directives
+ <p>Associée à la possibilité avec Apache de définir
+ des variables d'environnement à l'aide de directives
<code>SetEnvIf</code>, 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.</p>
+ 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.</p>
</section>
</section>
<section id="conclusion"><title>Conclusion</title>
<p>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.</p>
+ 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.</p>
</section>
</manualpage>
-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1673563:1741864 (outdated) -->
+<!-- English Revision: 1741864 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<manualpage metafile="access.xml.meta">
<parentdocument href="./">Rewrite</parentdocument>
-<title>Utiliser mod_rewrite pour le contrôle d'accès</title>
+<title>Utiliser mod_rewrite pour le contrôle d'accès</title>
<summary>
-<p>Ce document est un complément à la <a
-href="../mod/mod_rewrite.html">documentation de référence</a> de
+<p>Ce document est un complément à la <a
+href="../mod/mod_rewrite.html">documentation de référence</a> de
<module>mod_rewrite</module>. Il explique comment utiliser
-<module>mod_rewrite</module> pour contrôler l'accès à diverses
+<module>mod_rewrite</module> pour contrôler l'accès à diverses
ressources, ainsi que d'autres techniques en rapport. Il contient de
nombreux exemples d'utilisation courante de mod_rewrite avec une
-description détaillée de leur fonctionnement.</p>
+description détaillée de leur fonctionnement.</p>
-<note type="warning">Vous devez vous attacher à comprendre le
+<note type="warning">Vous devez vous attacher à comprendre le
fonctionnement des exemples, car la plupart d'entre eux ne
-fonctionneront pas sur votre système si vous vous contentez de les
+fonctionneront pas sur votre système si vous vous contentez de les
copier/coller dans vos fichiers de configuration.</note>
</summary>
<seealso><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></seealso>
-<seealso><a href="intro.html">Introduction à mod_rewrite</a></seealso>
+<seealso><a href="intro.html">Introduction à mod_rewrite</a></seealso>
<seealso><a href="remapping.html">Redirection et remise en
correspondance</a></seealso>
-<!-- <seealso><a href="access.html">Contrôler l'accès</a></seealso> -->
+<!-- <seealso><a href="access.html">Contrôler l'accès</a></seealso> -->
<seealso><a href="vhosts.html">Serveurs virtuels</a></seealso>
<seealso><a href="proxy.html">Serveurs mandataires</a></seealso>
<seealso><a href="rewritemap.html">Utilisation de RewriteMap</a></seealso>
-<seealso><a href="advanced.html">Techniques avancées</a></seealso>
+<seealso><a href="advanced.html">Techniques avancées</a></seealso>
<seealso><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></seealso>
<section id="blocked-inline-images">
- <title>Blocage du référencement à chaud (Hotlinking) d'images</title>
+ <title>Blocage du référencement à chaud (Hotlinking) d'images</title>
<dl>
<dt>Description :</dt>
<dd>
- <p>Cette technique vous permet d'interdire à d'autres sites
+ <p>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.</p>
</dd>
<p>Cette technique repose sur la valeur de la variable
optionnelle <code>HTTP_REFERER</code>. 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.</p>
- <p>Il y a plusieurs manières de gérer cette situation.</p>
+ utilisateurs cependant, la requête échouera, en ce sens que
+ l'image ne sera pas affichée depuis le site tiers.</p>
+ <p>Il y a plusieurs manières de gérer cette situation.</p>
<p>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 <code>www.example.com</code>.</p>
RewriteRule "\.(gif|jpg|png)$" "-" [F,NC]
</highlight>
- <p>Dans le second exemple, plutôt que de rejeter la requête,
- nous affichons une autre image à la place.</p>
+ <p>Dans le second exemple, plutôt que de rejeter la requête,
+ nous affichons une autre image à la place.</p>
<highlight language="config">
RewriteCond "%{HTTP_REFERER}" "!^$"
RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png" [R,NC]
</highlight>
- <p>Dans le troisième exemple, nous redirigeons la requête vers
- une image appartenant à un autre site.</p>
+ <p>Dans le troisième exemple, nous redirigeons la requête vers
+ une image appartenant à un autre site.</p>
<highlight language="config">
RewriteCond "%{HTTP_REFERER}" "!^$"
</highlight>
<p>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.</p>
+ 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.</p>
</dd>
<dt>Discussion :</dt>
<dd>
- <p>Si vous ne voulez pas rediriger la requête, mais
- simplement interdire l'accès à la ressource, vous pouvez y
+ <p>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 :</p>
<highlight language="config">
<dd>
<p>
- 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.</p>
- <p>La méthode classique pour exclure un robot consiste à définir
- un fichier, <code>/robots.txt</code> qui spécifie les parties de
+ <p>La méthode classique pour exclure un robot consiste à définir
+ un fichier, <code>/robots.txt</code> 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.
</p>
- <p>Notez qu'il existe des méthodes d'exclusion qui n'utilisent
+ <p>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 <code>USER_AGENT</code> peut être
- contournée très facilement car cette chaîne peut être modifiée.</p>
+ le contenu de la chaîne client <code>USER_AGENT</code> peut être
+ contournée très facilement car cette chaîne peut être modifiée.</p>
</dd>
<dt>Solution :</dt>
<dd>
- <p>On utilise un jeu de règles qui spécifie le répertoire à
- protéger, ainsi que la chaîne client <code>USER_AGENT</code> qui
+ <p>On utilise un jeu de règles qui spécifie le répertoire à
+ protéger, ainsi que la chaîne client <code>USER_AGENT</code> qui
identifie le robot malin ou envahissant.</p>
- <p>Dans cet exemple, nous bloquons un robot nommé
- <code>Vilain_Robot</code> pour le répertoire
+ <p>Dans cet exemple, nous bloquons un robot nommé
+ <code>Vilain_Robot</code> pour le répertoire
<code>/secret/fichiers</code>. Si vous voulez bloquer ce client
- seulement depuis une source particulière, vous pouvez aussi
- spécifier un intervalle d'adresses IP.</p>
+ seulement depuis une source particulière, vous pouvez aussi
+ spécifier un intervalle d'adresses IP.</p>
<highlight language="config">
RewriteCond "%{HTTP_USER_AGENT}" "^NameOfBadRobot"
<dd>
<p>
- 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 :
</p>
<highlight language="config">
SetEnvIfNoCase User-Agent "^NameOfBadRobot" goaway
</Location>
</highlight>
<p>
- Comme indiqué plus haut, il est aisé de contourner cette
- technique, simplement en modifiant le contenu de l'en-tête
- <code>USER_AGENT</code>. 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
+ <code>USER_AGENT</code>. 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.
</p>
</dd>
<dt>Description :</dt>
<dd>
- <p>Nous voulons interdire l'accès à notre serveur aux clients
- contenus dans une liste noire similaire à
+ <p>Nous voulons interdire l'accès à notre serveur aux clients
+ contenus dans une liste noire similaire à
<code>hosts.deny</code>.</p>
</dd>
## hosts.deny<br />
##<br />
## ATTENTION! Ceci est une table de correspondances, non une liste,<br />
-## même si elle est traitée comme telle. mod_rewrite<br />
-## l'interprète comme une liste de paires clé/valeur, et<br />
-## chaque entrée doit au moins posséder une valeur par<br />
-## défaut "-".<br />
+## même si elle est traitée comme telle. mod_rewrite<br />
+## l'interprète comme une liste de paires clé/valeur, et<br />
+## chaque entrée doit au moins posséder une valeur par<br />
+## défaut "-".<br />
<br />
193.102.180.41 -<br />
bsdti1.sdm.de -<br />
<dt>Discussion :</dt>
<dd>
<p>
- 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 <code>[OR]</code> de la
- première.
+ première.
</p>
</dd>
</dl>
<section id="referer-deflector">
- <title>Aiguillage basé sur l'en-tête Referer</title>
+ <title>Aiguillage basé sur l'en-tête Referer</title>
<dl>
<dt>Description :</dt>
<dd>
- <p>Redirige les requêtes en fonction du Referer de provenance de
- la requête, avec des cibles différentes pour chaque Referer.</p>
+ <p>Redirige les requêtes en fonction du Referer de provenance de
+ la requête, avec des cibles différentes pour chaque Referer.</p>
</dd>
<dt>Solution :</dt>
<dd>
- <p>Le jeu de règles suivant utilise un fichier de correspondances pour
- associer chaque Referer à une cible de redirection.</p>
+ <p>Le jeu de règles suivant utilise un fichier de correspondances pour
+ associer chaque Referer à une cible de redirection.</p>
<highlight language="config">
RewriteMap deflector "txt:/path/to/deflector.map"
</highlight>
<p>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 :</p>
<highlight language="config">
-##<br />
-## deflector.map<br />
-##<br />
-<br />
-http://www.mauvais-gars.example.com/mauvais/index.html -<br />
-http://www.mauvais-gars.example.com/mauvais/index2.html -<br />
-http://www.mauvais-gars.example.com/mauvais/index3.html http://quelque-part.example.com/
+##
+## deflector.map
+##
+
+http://badguys.example.com/bad/index.html -
+http://badguys.example.com/bad/index2.html -
+http://badguys.example.com/bad/index3.html http://somewhere.example.com/
</highlight>
</dd>
<message id="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</message>
<message id="name-section">NOM</message>
<message id="hyphenation">Césure</message>
- <message id="foundabug">Bugfix checklist</message>
- <message id="httpdchangelog">httpd changelog</message>
- <message id="httpdknownissues">Known issues</message>
- <message id="httpdreportabug">Report a bug</message>
+ <message id="foundabug">Traitement des bugs</message>
+ <message id="httpdchangelog">Journal des modifications de httpd</message>
+ <message id="httpdknownissues">Problèmes connus</message>
+ <message id="httpdreportabug">Signaler un bug</message>
<!-- Used in description box for directives -->
<message id="syntax">Syntaxe</message>