<?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: 1490770:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<!-- TODO: Add discussion here of why we have !^$ in there. -->
<highlight language="config">
-RewriteCond %{HTTP_REFERER} !^$
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule \.(gif|jpg|png)$ - [F,NC]
+RewriteCond "%{HTTP_REFERER}" "!^$"
+RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
+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>
<highlight language="config">
-RewriteCond %{HTTP_REFERER} !^$
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule \.(gif|jpg|png)$ /images/go-away.png [R,NC]
+RewriteCond "%{HTTP_REFERER}" "!^$"
+RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
+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>
<highlight language="config">
-RewriteCond %{HTTP_REFERER} !^$
-RewriteCond %{HTTP_REFERER} !www.example.com [NC]
-RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif [R,NC]
+RewriteCond "%{HTTP_REFERER}" "!^$"
+RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif" [R,NC]
</highlight>
<p>De tous ces exemples, les deux derniers semblent les plus
parvenir sans utiliser mod_rewrite :</p>
<highlight language="config">
-SetEnvIf Referer example\.com localreferer
-<FilesMatch \.(jpg|png|gif)$>
+SetEnvIf Referer "example\.com" localreferer
+<FilesMatch "\.(jpg|png|gif)$">
Require env localreferer
</FilesMatch>
</highlight>
spécifier un intervalle d'adresses IP.</p>
<highlight language="config">
-RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot
-RewriteCond %{REMOTE_ADDR} =123\.45\.67\.[8-9]
-RewriteRule ^/secret/files/ - [F]
+RewriteCond "%{HTTP_USER_AGENT}" "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}" "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/" "-" [F]
</highlight>
</dd>
mod_rewrite via la méthode alternative suivante :
</p>
<highlight language="config">
-SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
-<Location /secret/files>
+SetEnvIfNoCase User-Agent "^NameOfBadRobot" goaway
+<Location "/secret/files">
<RequireAll>
Require all granted
Require not env goaway
<dd>
<highlight language="config">
RewriteEngine on
-RewriteMap hosts-deny txt:/path/to/hosts.deny
-RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
-RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
-RewriteRule ^ - [F]
+RewriteMap hosts-deny "txt:/path/to/hosts.deny"
+RewriteCond "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^" "-" [F]
</highlight>
<example>
associer chaque Referer à une cible de redirection.</p>
<highlight language="config">
-RewriteMap deflector txt:/path/to/deflector.map
+RewriteMap deflector "txt:/path/to/deflector.map"
-RewriteCond %{HTTP_REFERER} !=""
-RewriteCond ${deflector:%{HTTP_REFERER}} =-
-RewriteRule ^ %{HTTP_REFERER} [R,L]
+RewriteCond "%{HTTP_REFERER}" !=""
+RewriteCond "${deflector:%{HTTP_REFERER}}" "=-"
+RewriteRule "^" "%{HTTP_REFERER}" [R,L]
-RewriteCond %{HTTP_REFERER} !=""
-RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
-RewriteRule ^ ${deflector:%{HTTP_REFERER}} [R,L]
+RewriteCond "%{HTTP_REFERER}" !=""
+RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule "^" "${deflector:%{HTTP_REFERER}}" [R,L]
</highlight>
<p>Le fichier de correspondances contient les cibles de
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision: 1670326:1674921 (outdated) -->
+<!-- English Revision: 1674921 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<highlight language="config">
RewriteEngine on
-RewriteMap users-to-hosts txt:/path/to/map.users-to-hosts
-RewriteRule ^/u/([^/]+)/?(.*) http://${users-to-hosts:$1|server0}/u/$1/$2
+RewriteMap users-to-hosts "txt:/path/to/map.users-to-hosts"
+RewriteRule "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"
</highlight>
</dd>
</dl>
<highlight language="config">
# Cet exemple n'est valable que dans un contexte de répertoire
-RewriteCond %{REQUEST_URI} !-U
-RewriteRule ^(.+)\.html$ /regenerate_page.cgi [PT,L]
+RewriteCond "%{REQUEST_URI}" "!-U"
+RewriteRule "^(.+)\.html$" "/regenerate_page.cgi" [PT,L]
</highlight>
<p>L'opérateur <code>-U</code> permet de déterminer si la chaîne
<highlight language="config">
RewriteEngine on
-RewriteMap lb rnd:/path/to/serverlist.txt
-RewriteRule ^/(.*) http://${lb:serveurs}/$1 [P,L]
+RewriteMap lb "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:serveurs}/$1" [P,L]
</highlight>
<p><code>liste-serveurs.txt</code> contiendra la liste des serveurs :</p>
<highlight language="config">
RewriteEngine on
-RewriteRule ^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*) /home/<strong>$2</strong>/$1/public_html$3
+RewriteRule "^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*)" "/home/<strong>$2</strong>/$1/public_html$3"
</highlight>
</dd>
</dl>
l'heure :</p>
<highlight language="config">
-+RewriteEngine on
-+RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
-+RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
-+RewriteRule ^foo\.html$ foo.day.html [L]
+RewriteEngine on
+RewriteCond "%{TIME_HOUR}%{TIME_MIN}" ">0700"
+RewriteCond "%{TIME_HOUR}%{TIME_MIN}" "<1900"
+RewriteRule "^foo\.html$" "foo.day.html" [L]
+RewriteRule "^foo\.html$" "foo.night.html"
</highlight>
<p>Avec cet exemple, l'URL <code>foo.html</code> renvoie
<highlight language="config">
RewriteEngine on
-RewriteRule ^/cheval/(.*) /poney/$1 [E=<strong>rewritten:1</strong>]
+RewriteRule "^/cheval/(.*)" "/poney/$1" [E=<strong>rewritten:1</strong>]
</highlight>
<p>Plus loin dans votre jeu de règles, vous pouvez vérifier le
RewriteCond :</p>
<highlight language="config">
-RewriteCond %{ENV:rewritten} =1
+RewriteCond "%{ENV:rewritten}" =1
</highlight>
</dd>
<?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: 1479866:1678373 (outdated) -->
+<!-- English Revision: 1678373 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<highlight language="config">Redirect /one/ http://one.example.com/</highlight>
+<p>Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple
+<code>example.com</code> vers <code>www.example.com</code>, voir la
+méthode <a href="remapping.html#canonicalhost">Noms d'hôtes canoniques</a>.</p>
+
<p>Pour rediriger les URLs <code>http</code> vers <code>https</code>,
utilisez cette définition :</p>
<highlight language="config">
<VirtualHost *:80>
ServerName www.example.com
-Redirect / https://www.example.com/
+Redirect "/" "https://www.example.com/"
</VirtualHost >
<VirtualHost *:443>
<code>Alias</code> pour des raisons de simplicité et de performances.</p>
<example><title>Utilisation de la directive Alias</title>
-<highlight language="config">Alias /cats
-/var/www/virtualhosts/felines/htdocs</highlight>
+<highlight language="config">Alias "/cats"
+"/var/www/virtualhosts/felines/htdocs"</highlight>
</example>
<p>
réécrits par <module>mod_proxy</module>.</p>
<highlight language="config">
-RewriteRule ^/?images(.*) http://serveur-images.local/images$1 [P]
+RewriteRule "^/?images(.*)" "http://serveur-images.local/images$1" [P]
</highlight>
<p>Cependant, dans les nombreux cas où aucune correspondance au modèle
être remplacé par :</p>
<highlight language="config">
-ProxyPass /images/ http://serveur-images.local/images/
+ProxyPass "/images/" "http://serveur-images.local/images/"
</highlight>
<p>Que vous utilisiez <directive
redirections en provenance du serveur d'arrière-plan :</p>
<highlight language="config">
-ProxyPassReverse /images/ http://serveur-images.local/images/
+ProxyPassReverse "/images/" "http://serveur-images.local/images/"
</highlight>
<p>Vous devrez cependant tout de même utiliser <code>RewriteRule</code>
<highlight language="config">
<If "req('Host') != 'www.example.com'">
- Redirect / http://www.example.com
+ Redirect "/" "http://www.example.com"
</If>
</highlight>
<?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: 1562174:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
non-alphanumériques des références arrières seront échappés. Considérons
par exemple cette règle :</p>
-<highlight language="config">RewriteRule ^search/(.*)$ /search.php?term=$1</highlight>
+<highlight language="config">RewriteRule "^search/(.*)$" "/search.php?term=$1"</highlight>
<p>Soit le terme de recherche 'x & y/z' ; un navigateur va le coder
en 'x%20%26%20y%2Fz', transformant la requête en
<highlight language="config">
RewriteEngine On
-RewriteRule ^/index\.html - [CO=frontdoor:yes:.example.org:1440:/]
+RewriteRule "^/index\.html" "-" [CO=frontdoor:yes:.example.org:1440:/]
</highlight>
<p>Dans l'exemple ci-dessus, la règle ne réécrit
une telle requête du journal des accès.</p>
<example>
-RewriteRule \.(png|gif|jpg) - [E=image:1]<br />
-CustomLog logs/access_log combined env=!image
+RewriteRule "\.(png|gif|jpg)" "-" [E=image:1]<br />
+CustomLog "logs/access_log" combined env=!image
</example>
<p>Notez que le même effet peut être obtenu à l'aide de la directive
<p>La règle suivante va interdire la téléchargement de fichiers
<code>.exe</code> depuis votre serveur.</p>
-<highlight language="config">RewriteRule \.exe - [F]</highlight>
+<highlight language="config">RewriteRule "\.exe" "-" [F]</highlight>
<p>Cet exemple utilise la syntaxe "-" pour la cible de réécriture, ce
qui signifie que l'URI de la requête n'est pas modifié. Il n'y a aucune
<p>Comme dans le cas du drapeau [F], on utilise en général la syntaxe
"-" pour la cible de réécriture lorsqu'on utilise le drapeau [G] :</p>
-<highlight language="config">RewriteRule oldproduct - [G,NC]</highlight>
+<highlight language="config">RewriteRule "oldproduct" "-" [G,NC]</highlight>
<p>Lorsqu'on utilise [G], [L] est implicite - c'est à dire que la
réponse est renvoyée immédiatement, et aucune autre règle n'est évaluée.</p>
l'interprétation de tous les fichiers sans extension par le gestionnaire
php :</p>
-<highlight language="config">RewriteRule !\. -
-[H=application/x-httpd-php]</highlight>
+<highlight language="config">RewriteRule "!\." "-" [H=application/x-httpd-php]</highlight>
<p>
L'expression rationnelle ci-dessus - <code>!\.</code> - correspond à
l'objet d'une requête avec l'extension <code>.phps</code> :</p>
<highlight language="config">
-RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source]
+RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
</highlight>
module="mod_rewrite">RewriteRule</directive> sera sautée.</p>
<highlight language="config">
-RewriteBase /
-RewriteCond %{REQUEST_URI} !=/index.php
-RewriteRule ^(.*) /index.php?req=$1 [L,PT]
+RewriteBase "/"
+RewriteCond "%{REQUEST_URI}" "!=/index.php"
+RewriteRule "^(.*)" "/index.php?req=$1" [L,PT]
</highlight>
</section>
ceci jusqu'il n'y ait plus de A à remplacer.
</p>
-<highlight language="config">RewriteRule (.*)A(.*) $1B$2 [N]</highlight>
+<highlight language="config">RewriteRule "(.*)A(.*)" "$1B$2" [N]</highlight>
<p>Vous pouvez vous représenter ce traitement comme une boucle
<code>while</code> : tant que le modèle de la règle correspond (c'est à
d'itération peut être modifié via le drapeau N.</p>
<highlight language="config">
# On veut remplacer 1 caractère à chaque itération de la boucle
-RewriteRule (.+)[><;]$ $1 [N=64000]
+RewriteRule "(.+)[><;]$" "$1" [N=64000]
# ... ou s'arrêter après 10 itérations
-RewriteRule (.+)[><;]$ $1 [N=10]
+RewriteRule "(.+)[><;]$" "$1" [N=10]
</highlight>
</section>
insensible à la casse, si bien que par exemple, <code>.jpg</code> aussi
bien que <code>.JPG</code> seront acceptés.</p>
-<highlight language="config">RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC]</highlight>
+<highlight language="config">RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]</highlight>
</section>
<section id="flag_ne"><title>NE|noescape</title>
hexadécimal. Le drapeau [NE] permet d'éviter cette conversion.
</p>
-<highlight language="config">RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]</highlight>
+<highlight language="config">RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]</highlight>
<p>
Dans l'exemple ci-dessus, <code>/anchor/xyz</code> est réécrit en
soient traitées par un serveur d'images annexe, vous pouvez utiliser
une règle de ce style :</p>
-<highlight language="config">RewriteRule /(.*)\.(jpg|gif|png)$ http://images.example.com/$1.$2 [P]</highlight>
+<highlight language="config">RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]</highlight>
<p>L'utilisation du drapeau [P] provoque aussi l'effet du drapeau [L] -
autrement dit, la requête est immédiatement envoyée au mandataire, et
</p>
<highlight language="config">
-Alias /icons /usr/local/apache/icons
-RewriteRule /pics/(.+)\.jpg$ /icons/$1.gif [PT]
+Alias "/icons" "/usr/local/apache/icons"
+RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
</highlight>
<p>
<p>Considérons la règle suivante :</p>
-<highlight language="config">RewriteRule /pages/(.+) /page.php?page=$1
-[QSA]</highlight>
+<highlight language="config">RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]</highlight>
<p>Avec le drapeau [QSA], une requête pour
<code>/pages/123?one=two</code> sera réécrite en
correspond pas à un fichier existant.</p>
<highlight language="config">
# La requête concerne-t-elle un fichier qui n'existe pas ?
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond "%{REQUEST_FILENAME}" "!-f"
+RewriteCond "%{REQUEST_FILENAME}" "!-d"
# Si c'est la cas, on saute les deux règles de réécriture suivantes
-RewriteRule .? - [S=2]
+RewriteRule ".?" "-" [S=2]
-RewriteRule (.*\.gif) images.php?$1
-RewriteRule (.*\.html) docs.php?$1
+RewriteRule "(.*\.gif)" "images.php?$1"
+RewriteRule "(.*\.html)" "docs.php?$1"
</highlight>
contenues dans le bloc else :</p>
<highlight language="config">
# Est-ce que le fichier existe ?
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
+RewriteCond "%{REQUEST_FILENAME}" "!-f"
+RewriteCond "%{REQUEST_FILENAME}" "!-d"
# Create an if-then-else construct by skipping 3 lines if we meant to go to the "else" stanza.
-RewriteRule .? - [S=3]
+RewriteRule ".?" "-" [S=3]
# Si le fichier existe, alors :
-RewriteRule (.*\.gif) images.php?$1
- RewriteRule (.*\.html) docs.php?$1
+RewriteRule "(.*\.gif)" "images.php?$1"
+ RewriteRule "(.*\.html)" "docs.php?$1"
# Skip past the "else" stanza.
- RewriteRule .? - [S=1]
+ RewriteRule ".?" "-" [S=1]
# ELSE...
-RewriteRule (.*) 404.php?file=$1
+RewriteRule "(.*)" "404.php?file=$1
# END
</highlight>
<highlight language="config">
# Sert les fichier .pl en tant que plein texte
-RewriteRule \.pl$ - [T=text/plain]
+RewriteRule "\.pl$" "-" [T=text/plain]
</highlight>
<p>Ou encore, si vous possédez une caméra qui produit des fichiers
<highlight language="config">
# Les fichiers dont le nom contient 'IMG' sont des images jpg.
-RewriteRule IMG - [T=image/jpg]
+RewriteRule "IMG" "-" [T=image/jpg]
</highlight>
<p>Notez cependant qu'il s'agit d'un exemple trivial, et que le problème
<?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: 1335963:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<highlight language="config">
RewriteEngine on
-RewriteBase /produits/
-RewriteRule ^widget/(.*)$ http://produits.example.com/widget/$1 [P]
-ProxyPassReverse /produits/objet/ http://produits.example.com/objet/
+RewriteBase "/produits/"
+RewriteRule "^widget/(.*)$" "http://produits.example.com/widget/$1" [P]
+ProxyPassReverse "/produits/objet/" "http://produits.example.com/objet/"
</highlight>
<p>Dans le deuxième exemple, nous ne mandatons la requête que si nous
migré.</p>
<highlight language="config">
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
-RewriteRule ^/(.*) http://ancien.exemple.com/$1 [P]
-ProxyPassReverse / http://ancien.exemple.com/
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^/(.*)" "http://ancien.exemple.com/$1" [P]
+ProxyPassReverse "/" "http://ancien.exemple.com/"
</highlight>
</dd>
<?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: 1643532:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<highlight language="config">
RewriteEngine on
-RewriteRule ^<strong>/foo</strong>\.html$ <strong>/bar</strong>.html [PT]
+RewriteRule "^<strong>/foo</strong>\.html$" "<strong>/bar</strong>.html" [PT]
</highlight>
</dd>
</dl>
<highlight language="config">
RewriteEngine on
-RewriteRule ^<strong>foo</strong>\.html$ <strong>bar</strong>.html [<strong>R</strong>]
+RewriteRule "^<strong>foo</strong>\.html$" "<strong>bar</strong>.html" [<strong>R</strong>]
</highlight>
</dd>
de dissimuler la redirection au client. Dans cet exemple, en
revanche, on aurait pu se contenter d'une directive Redirect :</p>
- <highlight language="config">Redirect /foo.html /bar.html</highlight>
+ <highlight language="config">Redirect "/foo.html" "/bar.html"</highlight>
</dd>
</dl>
<highlight language="config">#Avec mod_rewrite
RewriteEngine on
-RewriteRule ^/docs/(.+) http://nouveau.example.com/docs/$1 [R,L]
+RewriteRule "^/docs/(.+)" "http://nouveau.example.com/docs/$1" [R,L]
</highlight>
<highlight language="config">#Avec RedirectMatch
-RedirectMatch ^/docs/(.*) http://nouveau.example.com/docs/$1
+RedirectMatch "^/docs/(.*)" "http://nouveau.example.com/docs/$1"
</highlight>
<highlight language="config">#Avec Redirect
-Redirect /docs/ http://nouveau.example.com/docs/
+Redirect "/docs/" "http://nouveau.example.com/docs/"
</highlight>
</dd>
</dl>
<highlight language="config">
RewriteEngine on
-RewriteBase /~quux/
-RewriteRule ^foo\.html$ foo.cgi [H=<strong>cgi-script</strong>]
+RewriteBase "/~quux/"
+RewriteRule "^foo\.html$" "foo.cgi" [H=<strong>cgi-script</strong>]
</highlight>
</dd>
</dl>
# jeu de règles assurant une compatibilité ascendante en réécrivant<br />
# document.html en document.php si et seulement si document.php<br />
# existe
-<Directory /var/www/htdocs>
+<Directory "/var/www/htdocs">
RewriteEngine on
- RewriteBase /var/www/htdocs
+ RewriteBase "/var/www/htdocs"
- RewriteCond $1.php -f
- RewriteCond $1.html !-f
- RewriteRule ^(.*).html$ $1.php
+ RewriteCond "$1.php" -f
+ RewriteCond "$1.html" !-f
+ RewriteRule "^(.*).html$" "$1.php"
</Directory>
</highlight>
</dd>
ServerName undesired.example.com
ServerAlias example.com notthis.example.com
- Redirect / http://www.example.com/
+ Redirect "/" "http://www.example.com/"
</VirtualHost>
<VirtualHost *:80>
<highlight language="config">
<If "%{HTTP_HOST} != 'www.example.com'">
- Redirect / http://www.example.com/
+ Redirect "/" "http://www.example.com/"
</If>
</highlight>
<highlight language="config">
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
- Redirect /admin/ https://www.example.com/admin/
+ Redirect "/admin/" "https://www.example.com/admin/"
</If>
</highlight>
<p>Pour les sites écoutant sur un port autre que 80:</p>
<highlight language="config">
-RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
-RewriteCond %{HTTP_HOST} !^$
-RewriteCond %{SERVER_PORT} !^80$
-RewriteRule ^/?(.*) http://www.example.com:%{SERVER_PORT}/$1 [L,R,NE]
+RewriteCond "%{HTTP_HOST}" "!^www\.example\.com" [NC]
+RewriteCond "%{HTTP_HOST}" "!^$"
+RewriteCond "%{SERVER_PORT}" "!^80$"
+RewriteRule "^/?(.*)" "http://www.example.com:%{SERVER_PORT}/$1" [L,R,NE]
</highlight>
<p>Et pour un site écoutant sur le port 80</p>
<highlight language="config">
-RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
-RewriteCond %{HTTP_HOST} !^$
-RewriteRule ^/?(.*) http://www.example.com/$1 [L,R,NE]
+RewriteCond "%{HTTP_HOST}" "!^www\.example\.com" [NC]
+RewriteCond "%{HTTP_HOST}" "!^$"
+RewriteRule "^/?(.*)" "http://www.example.com/$1" [L,R,NE]
</highlight>
<p>
Si vous souhaitez que cette règle s'applique à tous les noms de
le jeu de règles suivants :</p>
<highlight language="config">
-RewriteCond %{HTTP_HOST} !^www\. [NC]
-RewriteCond %{HTTP_HOST} !^$
-RewriteRule ^/?(.*) http://www.%{HTTP_HOST}/$1 [L,R,NE]
+RewriteCond "%{HTTP_HOST}" "!^www\." [NC]
+RewriteCond "%{HTTP_HOST}" "!^$"
+RewriteRule "^/?(.*)" "http://www.%{HTTP_HOST}/$1" [L,R,NE]
</highlight>
<p>
Vous pouvez utiliser ce jeu de règles aussi bien dans le fichier
# on cherche tout d'abord dans dir1/...
# ... et si on trouve, on est content et on arrête :
-RewriteCond %{DOCUMENT_ROOT}/<strong>dir1</strong>/%{REQUEST_URI} -f
-RewriteRule ^(.+) %{DOCUMENT_ROOT}/<strong>dir1</strong>/$1 [L]
+RewriteCond "%{DOCUMENT_ROOT}/<strong>dir1</strong>/%{REQUEST_URI}" -f
+RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/<strong>dir1</strong>/$1" [L]
# on cherche ensuite dans dir2/...
# ... et si on trouve, on est content et on arrête :
-RewriteCond %{DOCUMENT_ROOT}/<strong>dir2</strong>/%{REQUEST_URI} -f
-RewriteRule ^(.+) %{DOCUMENT_ROOT}/<strong>dir2</strong>/$1 [L]
+RewriteCond "%{DOCUMENT_ROOT}/<strong>dir2</strong>/%{REQUEST_URI}" -f
+RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/<strong>dir2</strong>/$1" [L]
# sinon, on continue la recherche avec d'autres directives Alias
# ou ScriptAlias, etc...
-RewriteRule ^ - [PT]
+RewriteRule "^" "-" [PT]
</highlight>
</dd>
</dl>
<highlight language="config">
HostnameLookups on
RewriteEngine on
-RewriteMap multiplex txt:/path/to/map.mirrors
-RewriteCond %{REMOTE_HOST} ([a-z]+)$ [NC]
-RewriteRule ^/(.*)$ ${multiplex:<strong>%1</strong>|http://www.example.com/}$1 [R,L]
+RewriteMap multiplex "txt:/path/to/map.mirrors"
+RewriteCond "%{REMOTE_HOST}" "([a-z]+)$ [NC]"
+RewriteRule "^/(.*)$" "${multiplex:<strong>%1</strong>|http://www.example.com/}$1" [R,L]
</highlight>
<example>
reçoivent la page <code>foo.32.html</code>. Tout ceci est
effectué par le jeu de règles suivant :</p>
<highlight language="config">
-RewriteCond %{HTTP_USER_AGENT} ^<strong>Mozilla/3</strong>.*
-RewriteRule ^foo\.html$ foo.<strong>NS</strong>.html [<strong>L</strong>]
+RewriteCond "%{HTTP_USER_AGENT}" "^<strong>Mozilla/3</strong>.*"
+RewriteRule "^foo\.html$" "foo.<strong>NS</strong>.html" [<strong>L</strong>]
-RewriteCond %{HTTP_USER_AGENT} ^Lynx/ [OR]
-RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12]
-RewriteRule ^foo\.html$ foo.<strong>20</strong>.html [<strong>L</strong>]
+RewriteCond "%{HTTP_USER_AGENT}" "^Lynx/" [OR]
+RewriteCond "%{HTTP_USER_AGENT}" "^Mozilla/[12]"
+RewriteRule "^foo\.html$" "foo.<strong>20</strong>.html" [<strong>L</strong>]
-RewriteRule ^foo\.html$ foo.<strong>32</strong>.html [<strong>L</strong>]
+RewriteRule "^foo\.html$" "foo.<strong>32</strong>.html" [<strong>L</strong>]
</highlight>
</dd>
</dl>
jeu de règles suivant, nous remplaçons <code>/matous</code> et
<code>/minettes</code> par le canonique <code>/chats</code>.</p>
- <highlight language="config">RewriteRule ^/(matous|minettes)/(.*) /chats/$2 [R]</highlight>
+ <highlight language="config">RewriteRule "^/(matous|minettes)/(.*)" "/chats/$2" [R]</highlight>
</dd>
<dt>Discussion :</dt>
<dd>On serait mieux inspiré d'utiliser ici les directives Redirect ou
RedirectMatch :
- <highlight language="config"> RedirectMatch ^/(matous|minettes)/(.*) /chats/$2 </highlight>
+ <highlight language="config"> RedirectMatch "^/(matous|minettes)/(.*)" "/chats/$2" </highlight>
</dd>
</dl>
<highlight language="config">
RewriteEngine on
-RewriteRule ^/$ /a-propos-de/ [<strong>R</strong>]
+RewriteRule "^/$" "/a-propos-de/" [<strong>R</strong>]
</highlight>
<p>Notez que l'on peut aussi y parvenir en utilisant la directive
<directive module="mod_alias">RedirectMatch</directive> :</p>
-<highlight language="config">RedirectMatch ^/$
-http://example.com/a-propos-de/</highlight>
+<highlight language="config">RedirectMatch "^/$" "http://example.com/a-propos-de/"</highlight>
<p>Notez aussi que cet exemple ne réécrit que l'URL racine. En d'autres
termes, il réécrit une requête pour <code>http://example.com/</code>,
<directive module="mod_dir">FallbackResource</directive> :</p>
<highlight language="config">
-<Directory /var/www/my_blog>
- FallbackResource index.php
+<Directory "/var/www/my_blog">
+ FallbackResource "index.php"
</Directory>
</highlight>
:</p>
<highlight language="config">
-<Directory /var/www/my_blog>
- RewriteBase /my_blog
+<Directory "/var/www/my_blog">
+ RewriteBase "/my_blog"
- RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-f
- RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-d
- RewriteRule ^ index.php [PT]
+ RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-f
+ RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-d
+ RewriteRule "^" "index.php" [PT]
</Directory>
</highlight>
que chaîne de paramètres à index.php, vous pouvez remplacer cette règle
de réécriture par :</p>
-<highlight language="config">RewriteRule (.*) index.php?$1 [PT,QSA]</highlight>
+<highlight language="config">RewriteRule "(.*)" "index.php?$1" [PT,QSA]</highlight>
<p>Notez que l'on peut utiliser ces jeux de règles aussi bien dans un
fichier <code>.htaccess</code> que dans une section
<highlight language="config">
# Remove mykey=???
-RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
-RewriteRule (.*) $1?%1%3
+RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$"
+RewriteRule "(.*)" "$1?%1%3"
</highlight>
</li>
<highlight language="config">
# Copy from query string to PATH_INFO
-RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
-RewriteRule (.*) $1/products/%2/? [PT]
+RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$"
+RewriteRule "(.*)" "$1/products/%2/?" [PT]
</highlight>
</li>
<highlight language="config">
# Capture the value of mykey in the query string
-RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$
-RewriteCond %2 !=not-so-secret-value
-RewriteRule (.*) - [F]
+RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$""
+RewriteCond "%2" !=not-so-secret-value
+RewriteRule "(.*)" - [F]
</highlight>
</li>
<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]
+RewriteRule "^/?path/([^/]+)/([^/]+)" "/path?$1=$2" [PT]
</highlight>
</li>
</ul>
<?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: 1338147:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : VIncent Deffontaines -->
<!--
<p>Par exemple, vous pouvez définir une directive
<directive>RewriteMap</directive> comme suit :</p>
- <highlight language="config">RewriteMap examplemap txt:/path/to/file/map.txt</highlight>
+ <highlight language="config">RewriteMap examplemap "txt:/path/to/file/map.txt"</highlight>
<p>Vous pourrez par la suite utiliser cette table de correspondances
dans une directive <directive>RewriteRule</directive> comme suit :</p>
-<highlight language="config">RewriteRule ^/ex/(.*) ${examplemap:$1}</highlight>
+<highlight language="config">RewriteRule "^/ex/(.*)" "${examplemap:$1}"</highlight>
<p>Il est possible de spécifier une valeur par défaut qui sera utilisée
si la recherche dans la table de correspondances est infructueuse :</p>
-<highlight language="config">RewriteRule ^/ex/(.*) ${examplemap:$1|/not_found.html}</highlight>
+<highlight language="config">RewriteRule "^/ex/(.*)" "${examplemap:$1|/not_found.html}"</highlight>
<note><title>Contexte de répertoire et fichiers.htaccess</title>
<p>
<p><strong>Product to ID configuration</strong></p>
<highlight language="config">
-RewriteMap product2id txt:/etc/apache2/productmap.txt
-RewriteRule ^/product/(.*) /prods.php?id=${product2id:$1|NOTFOUND} [PT]
+RewriteMap product2id "txt:/etc/apache2/productmap.txt"
+RewriteRule "^/product/(.*)" "/prods.php?id=${product2id:$1|NOTFOUND}" [PT]
</highlight>
<p>Nous supposons ici que le script <code>prods.php</code> sait quoi
dans un fichier <code>.htaccess</code>, vous devrez supprimer le
slash de début dans le modèle de réécriture afin que ce dernier
puisse correspondre à toute URL :
- <highlight language="config">RewriteRule ^product/(.*) /prods.php?id=${product2id:$1|NOTFOUND} [PT]</highlight>
+ <highlight language="config">RewriteRule "^product/(.*)" "/prods.php?id=${product2id:$1|NOTFOUND}" [PT]</highlight>
</note>
<note><title>Recherches mises en cache</title>
</example>
<p><strong>Directives de configuration</strong></p>
<highlight language="config">
-RewriteMap servers rnd:/path/to/file/map.txt
+RewriteMap servers "rnd:/path/to/file/map.txt"
-RewriteRule ^/(.*\.(png|gif|jpg)) http://${servers:static}/$1 [NC,P,L]
-RewriteRule ^/(.*) http://${servers:dynamic}/$1 [P,L]
+RewriteRule "^/(.*\.(png|gif|jpg))" "http://${servers:static}/$1" [NC,P,L]
+RewriteRule "^/(.*)" "http://${servers:dynamic}/$1" [P,L]
</highlight>
<p>Vous pouvez éventuellement spécifier un type dbm particulier :</p>
<highlight language="config">
-RewriteMap examplemap dbm=sdbm:/etc/apache/mapfile.dbm
+RewriteMap examplemap "dbm=sdbm:/etc/apache/mapfile.dbm"
</highlight>
<p>Ce type peut être choisi parmi sdbm, gdbm, ndbm ou db. Il est
<p>Vous pouvez alors faire référence au fichier obtenu dans votre
directive <code>RewriteMap</code> :</p>
<highlight language="config">
-RewriteMap mapname dbm:/etc/apache/mapfile.map
+RewriteMap mapname "dbm:/etc/apache/mapfile.map"
</highlight>
<note>
<highlight language="config">
RewriteMap lc int:tolower
-RewriteRule (.*?[A-Z]+.*) ${lc:$1} [R]
+RewriteRule "(.*?[A-Z]+.*)" "${lc:$1}" [R]
</highlight>
<note>
<p><strong>Configuration de la réécriture</strong></p>
<highlight language="config">
-RewriteMap d2u prg:/www/bin/dash2under.pl<br />
-RewriteRule - ${d2u:%{REQUEST_URI}}
+RewriteMap d2u "prg:/www/bin/dash2under.pl"<br />
+RewriteRule "-" "${d2u:%{REQUEST_URI}}"
</highlight>
<p><strong>dash2under.pl</strong></p>
<?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: 1338141:1673563 (outdated) -->
+<!-- English Revision: 1673563 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
RewriteMap lowercase int:tolower
-RewriteCond ${lowercase:%{<strong>HTTP_HOST</strong>}} ^www\.<strong>([^.]+)</strong>\.example\.com$
-RewriteRule ^(.*) /home/<strong>%1</strong>/www$1
+RewriteCond "${lowercase:%{<strong>HTTP_HOST</strong>}}" "^www\.<strong>([^.]+)</strong>\.example\.com$"
+RewriteRule "^(.*)" "/home/<strong>%1</strong>/www$1"
</highlight></dd>
<dt>Discussion</dt>
# journaux dissociables
LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
-CustomLog logs/access_log vcommon
+CustomLog "logs/access_log" vcommon
-<Directory /www/hosts>
+<Directory "/www/hosts">
# ExecCGI est nécessaire ici car on ne peut pas forcer l'exécution
# des CGI à la manière de ScriptAlias
Options FollowSymLinks ExecCGI
# quelle casse
## on s'occupe tout d'abord des documents normaux :<br />
-# permet à "Alias /icons/" de fonctionner - répéter pour les autres
-RewriteCond %{REQUEST_URI} !^/icons/
+# permet à Alias "/icons/" de fonctionner - répéter pour les autres
+RewriteCond "%{REQUEST_URI}" "!^/icons/"
# permet aux CGIs de fonctionner
-RewriteCond %{REQUEST_URI} !^/cgi-bin/
+RewriteCond "%{REQUEST_URI}" "!^/cgi-bin/"
# le coeur du traitement
-RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1
+RewriteRule "^/(.*)$" "/www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1"
## on s'occupe maintenant des CGIs - on doit forcer l'utilisation d'un
# gestionnaire
-RewriteCond %{REQUEST_URI} ^/cgi-bin/
-RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [H=cgi-script]
+RewriteCond "%{REQUEST_URI}" "^/cgi-bin/"
+RewriteRule "^/(.*)$" "/www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1" [H=cgi-script]
</highlight>
</section>
RewriteMap lowercase int:tolower
# définit le fichier de correspondances
-RewriteMap vhost txt:/www/conf/vhost.map
+RewriteMap vhost "txt:/www/conf/vhost.map"
# on s'occupe des alias comme ci-dessus
-RewriteCond %{REQUEST_URI} !^/icons/
-RewriteCond %{REQUEST_URI} !^/cgi-bin/
-RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+RewriteCond "%{REQUEST_URI}" "!^/icons/"
+RewriteCond "%{REQUEST_URI}" "!^/cgi-bin/"
+RewriteCond "${lowercase:%{SERVER_NAME}}" "^(.+)$"
# on effectue ici la remise en correspondance à base de fichier
-RewriteCond ${vhost:%1} ^(/.*)$
-RewriteRule ^/(.*)$ %1/docs/$1
+RewriteCond "${vhost:%1}" "^(/.*)$"
+RewriteRule "^/(.*)$" "%1/docs/$1"
-RewriteCond %{REQUEST_URI} ^/cgi-bin/
-RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
-RewriteCond ${vhost:%1} ^(/.*)$
-RewriteRule ^/(.*)$ %1/cgi-bin/$1 [H=cgi-script]
+RewriteCond "%{REQUEST_URI}" "^/cgi-bin/"
+RewriteCond "${lowercase:%{SERVER_NAME}}" "^(.+)$"
+RewriteCond "${vhost:%1}" "^(/.*)$"
+RewriteRule "^/(.*)$" "%1/cgi-bin/$1" [H=cgi-script]
</highlight>
</section>