<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision: 1641890:1643268 (outdated) -->
+<!-- English Revision : 1643268 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
</Directory>
# Vérifie si un en-tête HTTP correspond à une des valeurs d'une liste
-<If "%{HTTP:X-example-header} in { 'foo', 'bar', 'baz'}">
+<If "%{HTTP:X-example-header} in { 'foo', 'bar', 'baz' }">
La définition de l'en-tête correspond à une des valeurs recherchées
</If>
SetOutputFilter INFLATE
</If>
</Directory>
+
+# Exemples de fonctions dans un contexte booléen
+<If "md5('foo') == 'acbd18db4cc2f85cedef654fccc4a4d8'">
+ Header set checksum-matched true
+</If>
+<If "md5('foo') == replace('md5:XXXd18db4cc2f85cedef654fccc4a4d8', 'md5:XXX', 'acb')>
+ Header set checksum-matched-2 true
+</If>
+
+# Function example in string context
+Header set foo-checksum "expr=%{md5:foo}"
+
</highlight>
</section>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1605618:1643418 (outdated) -->
+<!-- English Revision : 1643318 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
</pre></example>
<p>Les directives suivantes autoriseraient alors l'accès à Bob
- Ellis, Tom Jackson, Barbara Jensen, Fred User, Allan Jefferson, et
+ Ellis, Tom Jackson, Barbara Jonsen, Fred User, Allan Jefferson, et
Paul Tilley, mais l'interdiraient à Jim Swenson, ou Elliot Rhodes
(car ils sont situés dans un sous-groupe de niveau de profondeur 2)
:</p>
<highlight language="config">
-Require ldap-group cn=Employees, o-Example
+Require ldap-group cn=Employees, o=Example
AuthLDAPMaxSubGroupDepth 1
</highlight>
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1600400:1642592 (outdated) -->
+<!-- English Revision : 1642592 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<section id="reqexpr"><title>Require expr</title>
<p>Le fournisseur <code>expr</code> permet d'accorder l'autorisation
- d'accès en fonction d'expressions arbitraires.</p>
+ d'accès de base en fonction d'expressions arbitraires.</p>
<highlight language="config">
Require expr "%{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17"
</highlight>
+ <highlight language="config">
+<RequireAll>
+ Require expr "!(%{QUERY_STRING} =~ /secret/)"
+ Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
+</RequireAll>
+ </highlight>
+
+ <highlight language="config">
+ Require expr "!(%{QUERY_STRING} =~ /secret/) && %{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
+ </highlight>
+
<p>La syntaxe de l'expression est décrite dans la documentation de <a
href="../expr.html">ap_expr</a>.</p>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1600543:1643445 (outdated) -->
+<!-- English Revision: 1643445 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
efficace que <code>%s</code>.</p>
</note>
+ <note><title>Note à propos des valeurs des expressions</title>
+ <p>Lorsque le paramètre valeur utilise l'interpréteur <a
+ href="../expr.html">ap_expr</a>, certaines syntaxes d'expressions
+ seront différentes des exemples qui évaluent des expressions
+ <em>booléennes</em> telles que <If> :</p>
+ <ul>
+ <li>Le point de départ de la syntaxe est 'string' au lieu de
+ 'expr'.</li>
+ <li>Les appels de fonction utilisent la syntaxe %{funcname:arg} au
+ lieu de funcname(arg).</li>
+ <li>Les fonctions multi-arguments ne sont pas encore disponibles
+ depuis le point de départ 'string'.</li>
+ <li>Il faut mettre entre guillemets l'ensemble du paramètre, comme
+ dans l'exemple suivant :
+ <highlight language="config">
+ Header set foo-checksum "expr=%{md5:foo}"
+ </highlight>
+ </li>
+
+ </ul>
+ </note>
+
<p><code>edit</code>nécessite les deux arguments
<var>valeur</var>, qui est une <glossary ref="regex">expression
rationnelle</glossary>, et une chaîne additionnelle
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1601533:1643036 (outdated) -->
+<!-- English Revision : 1643036 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<li>Bien que les règles de réécriture soient permises du point de vue de
la syntaxe dans les sections <directive type="section"
module="core">Location</directive> et <directive type="section"
-module="core">Files</directive>, elles n'y sont pas prises en compte, et
-n'y sont à priori d'aucune utilité.</li>
+module="core">Files</directive> (y compris leurs versions sous forme
+d'expression rationnelle), elles n'y sont pas prises en compte, et
+n'y sont à priori d'aucune utilité. Les substitutions
+relatives sont une fonctionnalité qui n'est, elle non-plus pas supportée
+dans ce genre de contexte.</li>
</ul>
</note>
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1638070:1642856 (outdated) -->
+<!-- English Revision : 1642856 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1363237 -->
+<!-- English Revision : 1643532 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
</section>
+<section id="rewrite-query">
+<title>Rewrite query string</title>
+
+<dl>
+<dt>Description :</dt>
+<dd>Vous voulez extraire une valeur particulière d'une chaîne de
+paramètres d'une URL, et soit la remplacer, soit l'incorporer dans un
+autre composant de l'URL.</dd>
+
+<dt>Solutions :</dt>
+<dd>
+<p>Dans la plupart des solutions de cette section, on utilise la même
+condition qui stocke la valeur recherchée dans la référence arrière %2.
+%1 est le début de la requête, et %3 ce qui reste. Cette condition est
+un peu complexe car elle introduit de la flexibilité et évite les
+doubles perluettes '&&' dans les substitutions.</p>
+<ul>
+ <li>Cette solution supprime le couple clé/valeur recherché :
+
+<highlight language="config">
+# Remove mykey=???
+RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
+RewriteRule (.*) $1?%1%3
+</highlight>
+ </li>
+
+ <li>Cette solution remplace la partie de l'URL qui suit la valeur
+ recherchée par un '?' :
+
+<highlight language="config">
+# Copy from query string to PATH_INFO
+RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
+RewriteRule (.*) $1/products/%2/? [PT]
+</highlight>
+ </li>
+
+ <li>Cette solution utilise la valeur recherchée dans une deuxième
+ condition ::
+
+<highlight language="config">
+# Capture the value of mykey in the query string
+RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
+RewriteCond %2 !=not-so-secret-value
+RewriteRule (.*) - [F]
+</highlight>
+ </li>
+
+ <li>Cette solution produit l'effet inverse des précédentes ; elle
+ copie des composantes du chemin (peut-être PATH_INFO) depuis l'URL
+ vers sa chaîne de paramètres :
+<highlight language="config">
+# The desired URL might be /products/kitchen-sink, and the script expects
+# /path?products=kitchen-sink.
+RewriteRule ^/?path/([^/]+)/([^/]+) /path?$1=$2 [PT]
+</highlight>
+ </li>
+</ul>
+
+</dd>
+
+</dl>
+</section>
+
</manualpage>