From c36752ff66db68216e3d5ab0a33809c70e8e5dfd Mon Sep 17 00:00:00 2001 From: Lucien Gentis Date: Sun, 17 May 2015 15:17:40 +0000 Subject: [PATCH] XML updates. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1679873 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/rewrite/access.xml.fr | 56 ++++++------ docs/manual/rewrite/advanced.xml.fr | 29 +++--- docs/manual/rewrite/avoid.xml.fr | 20 +++-- docs/manual/rewrite/flags.xml.fr | 72 ++++++++------- docs/manual/rewrite/proxy.xml.fr | 16 ++-- docs/manual/rewrite/remapping.xml.fr | 123 +++++++++++++------------- docs/manual/rewrite/rewritemap.xml.fr | 30 +++---- docs/manual/rewrite/vhosts.xml.fr | 42 ++++----- 8 files changed, 195 insertions(+), 193 deletions(-) diff --git a/docs/manual/rewrite/access.xml.fr b/docs/manual/rewrite/access.xml.fr index b1129245b2..02d3dc9356 100644 --- a/docs/manual/rewrite/access.xml.fr +++ b/docs/manual/rewrite/access.xml.fr @@ -1,7 +1,7 @@ - + @@ -89,27 +89,27 @@ correspondance -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]

Dans le second exemple, plutôt que de rejeter la requête, nous affichons une autre image à la place.

-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]

Dans le troisième exemple, nous redirigeons la requête vers une image appartenant à un autre site.

-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]

De tous ces exemples, les deux derniers semblent les plus @@ -127,8 +127,8 @@ RewriteRule \.(gif|jpg|png)$ http://other.example.com/image.gif [R,NC] parvenir sans utiliser mod_rewrite :

-SetEnvIf Referer example\.com localreferer -<FilesMatch \.(jpg|png|gif)$> +SetEnvIf Referer "example\.com" localreferer +<FilesMatch "\.(jpg|png|gif)$"> Require env localreferer </FilesMatch> @@ -177,9 +177,9 @@ SetEnvIf Referer example\.com localreferer spécifier un intervalle d'adresses IP.

-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] @@ -191,8 +191,8 @@ RewriteRule ^/secret/files/ - [F] mod_rewrite via la méthode alternative suivante :

-SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway -<Location /secret/files> +SetEnvIfNoCase User-Agent "^NameOfBadRobot" goaway +<Location "/secret/files"> <RequireAll> Require all granted Require not env goaway @@ -231,10 +231,10 @@ SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
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] @@ -286,15 +286,15 @@ bsdti1.sdm.de -
associer chaque Referer à une cible de redirection.

-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]

Le fichier de correspondances contient les cibles de diff --git a/docs/manual/rewrite/advanced.xml.fr b/docs/manual/rewrite/advanced.xml.fr index 82b54dfb7a..14382293bb 100644 --- a/docs/manual/rewrite/advanced.xml.fr +++ b/docs/manual/rewrite/advanced.xml.fr @@ -3,7 +3,7 @@ - + + @@ -101,13 +101,17 @@ rediriger toutes les URLs de niveaux inférieurs comme Redirect /one/ http://one.example.com/ +

Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple +example.com vers www.example.com, voir la +méthode Noms d'hôtes canoniques.

+

Pour rediriger les URLs http vers https, utilisez cette définition :

<VirtualHost *:80> ServerName www.example.com -Redirect / https://www.example.com/ +Redirect "/" "https://www.example.com/" </VirtualHost > <VirtualHost *:443> @@ -141,8 +145,8 @@ possible d'effectuer cette mise en correspondance avec Alias pour des raisons de simplicité et de performances.

Utilisation de la directive Alias -Alias /cats -/var/www/virtualhosts/felines/htdocs +Alias "/cats" +"/var/www/virtualhosts/felines/htdocs"

@@ -189,7 +193,7 @@ href="flags.html#flag_p">[P] qui permet de faire passer les URIs réécrits par mod_proxy.

-RewriteRule ^/?images(.*) http://serveur-images.local/images$1 [P] +RewriteRule "^/?images(.*)" "http://serveur-images.local/images$1" [P]

Cependant, dans les nombreux cas où aucune correspondance au modèle @@ -199,7 +203,7 @@ module="mod_proxy">ProxyPass. L'exemple précédent pour être remplacé par :

-ProxyPass /images/ http://serveur-images.local/images/ +ProxyPass "/images/" "http://serveur-images.local/images/"

Que vous utilisiez ProxyPassReverse pour intercepter les redirections en provenance du serveur d'arrière-plan :

-ProxyPassReverse /images/ http://serveur-images.local/images/ +ProxyPassReverse "/images/" "http://serveur-images.local/images/"

Vous devrez cependant tout de même utiliser RewriteRule @@ -237,7 +241,7 @@ suit :

<If "req('Host') != 'www.example.com'"> - Redirect / http://www.example.com + Redirect "/" "http://www.example.com" </If> diff --git a/docs/manual/rewrite/flags.xml.fr b/docs/manual/rewrite/flags.xml.fr index e2fc117552..9cfa83b3af 100644 --- a/docs/manual/rewrite/flags.xml.fr +++ b/docs/manual/rewrite/flags.xml.fr @@ -1,7 +1,7 @@ - + @@ -83,7 +83,7 @@ ces dernières sont appliquées. Avec le drapeau B, les caract&egrav non-alphanumériques des références arrières seront échappés. Considérons par exemple cette règle :

-RewriteRule ^search/(.*)$ /search.php?term=$1 +RewriteRule "^search/(.*)$" "/search.php?term=$1"

Soit le terme de recherche 'x & y/z' ; un navigateur va le coder en 'x%20%26%20y%2Fz', transformant la requête en @@ -179,7 +179,7 @@ fonctionnalité.

RewriteEngine On -RewriteRule ^/index\.html - [CO=frontdoor:yes:.example.org:1440:/] +RewriteRule "^/index\.html" "-" [CO=frontdoor:yes:.example.org:1440:/]

Dans l'exemple ci-dessus, la règle ne réécrit @@ -268,8 +268,8 @@ image. Cette variable d'environnement est ensuite utilisée pour exclure une telle requête du journal des accès.

-RewriteRule \.(png|gif|jpg) - [E=image:1]
-CustomLog logs/access_log combined env=!image +RewriteRule "\.(png|gif|jpg)" "-" [E=image:1]
+CustomLog "logs/access_log" combined env=!image

Notez que le même effet peut être obtenu à l'aide de la directive @@ -297,7 +297,7 @@ Forbidden.

La règle suivante va interdire la téléchargement de fichiers .exe depuis votre serveur.

-RewriteRule \.exe - [F] +RewriteRule "\.exe" "-" [F]

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 @@ -317,7 +317,7 @@ disponible auparavant ne l'est plus actuellement.

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] :

-RewriteRule oldproduct - [G,NC] +RewriteRule "oldproduct" "-" [G,NC]

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.

@@ -330,8 +330,7 @@ spécifié. Par exemple, on peut utiliser ce drapeau pour forcer l'interprétation de tous les fichiers sans extension par le gestionnaire php :

-RewriteRule !\. - -[H=application/x-httpd-php] +RewriteRule "!\." "-" [H=application/x-httpd-php]

L'expression rationnelle ci-dessus - !\. - correspond à @@ -345,7 +344,7 @@ faire en sorte que les fichiers .php soient l'objet d'une requête avec l'extension .phps :

-RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source] +RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source] @@ -406,9 +405,9 @@ la requête concerne déjà index.php, la directiv module="mod_rewrite">RewriteRule sera sautée.

-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] @@ -426,7 +425,7 @@ suivant, chaque occurence de A sera remplacée par B dans la requête ceci jusqu'il n'y ait plus de A à remplacer.

-RewriteRule (.*)A(.*) $1B$2 [N] +RewriteRule "(.*)A(.*)" "$1B$2" [N]

Vous pouvez vous représenter ce traitement comme une boucle while : tant que le modèle de la règle correspond (c'est à @@ -439,9 +438,9 @@ un B).

d'itération peut être modifié via le drapeau N.

# 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] @@ -458,7 +457,7 @@ transmise par Apache à votre serveur d'images dédié. La cor insensible à la casse, si bien que par exemple, .jpg aussi bien que .JPG seront acceptés.

-RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC] +RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]
NE|noescape @@ -467,7 +466,7 @@ bien que .JPG seront acceptés.

hexadécimal. Le drapeau [NE] permet d'éviter cette conversion.

-RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R] +RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]

Dans l'exemple ci-dessus, /anchor/xyz est réécrit en @@ -512,7 +511,7 @@ mandataire. Par exemple, si vous voulez que toutes les requêtes d'images soient traitées par un serveur d'images annexe, vous pouvez utiliser une règle de ce style :

-RewriteRule /(.*)\.(jpg|gif|png)$ http://images.example.com/$1.$2 [P] +RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [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 @@ -579,8 +578,8 @@ module="mod_alias">Alias sera bien évalué.

-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]

@@ -613,8 +612,7 @@ Avec le drapeau [QSA], les chaînes de requête peuvent être com

Considérons la règle suivante :

-RewriteRule /pages/(.+) /page.php?page=$1 -[QSA] +RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]

Avec le drapeau [QSA], une requête pour /pages/123?one=two sera réécrite en @@ -697,13 +695,13 @@ module="mod_rewrite">RewriteRule que si l'URI demandé ne correspond pas à un fichier existant.

# 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" @@ -719,18 +717,18 @@ bloc then contiendra skip=N, où N est le nombre de rè contenues dans le bloc else :

# 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 @@ -752,7 +750,7 @@ certaine manière :

# Sert les fichier .pl en tant que plein texte -RewriteRule \.pl$ - [T=text/plain] +RewriteRule "\.pl$" "-" [T=text/plain]

Ou encore, si vous possédez une caméra qui produit des fichiers @@ -761,7 +759,7 @@ avec le type MIME correct en se basant sur le nom du fichier :

# Les fichiers dont le nom contient 'IMG' sont des images jpg. -RewriteRule IMG - [T=image/jpg] +RewriteRule "IMG" "-" [T=image/jpg]

Notez cependant qu'il s'agit d'un exemple trivial, et que le problème diff --git a/docs/manual/rewrite/proxy.xml.fr b/docs/manual/rewrite/proxy.xml.fr index 92cd66d868..c169597aa7 100644 --- a/docs/manual/rewrite/proxy.xml.fr +++ b/docs/manual/rewrite/proxy.xml.fr @@ -1,7 +1,7 @@ - + @@ -72,9 +72,9 @@ correspondance 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/"

Dans le deuxième exemple, nous ne mandatons la requête que si nous @@ -84,10 +84,10 @@ ProxyPassReverse /produits/objet/ http://produits.example.com/objet/ migré.

-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/" diff --git a/docs/manual/rewrite/remapping.xml.fr b/docs/manual/rewrite/remapping.xml.fr index 265b3e83a2..94962af812 100644 --- a/docs/manual/rewrite/remapping.xml.fr +++ b/docs/manual/rewrite/remapping.xml.fr @@ -1,7 +1,7 @@ - + @@ -78,7 +78,7 @@ correspondance--> RewriteEngine on -RewriteRule ^/foo\.html$ /bar.html [PT] +RewriteRule "^/foo\.html$" "/bar.html" [PT] @@ -111,7 +111,7 @@ RewriteRule ^/foo\.html$ /bar.html [PT] RewriteEngine on -RewriteRule ^foo\.html$ bar.html [R] +RewriteRule "^foo\.html$" "bar.html" [R] @@ -123,7 +123,7 @@ RewriteRule ^foo\.html$ bar.html [ - Redirect /foo.html /bar.html + Redirect "/foo.html" "/bar.html" @@ -153,15 +153,15 @@ RewriteRule ^foo\.html$ bar.html [#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] #Avec RedirectMatch -RedirectMatch ^/docs/(.*) http://nouveau.example.com/docs/$1 +RedirectMatch "^/docs/(.*)" "http://nouveau.example.com/docs/$1" #Avec Redirect -Redirect /docs/ http://nouveau.example.com/docs/ +Redirect "/docs/" "http://nouveau.example.com/docs/" @@ -196,8 +196,8 @@ Redirect /docs/ http://nouveau.example.com/docs/ RewriteEngine on -RewriteBase /~quux/ -RewriteRule ^foo\.html$ foo.cgi   [H=cgi-script] +RewriteBase "/~quux/" +RewriteRule "^foo\.html$" "foo.cgi"   [H=cgi-script] @@ -234,13 +234,13 @@ RewriteRule ^foo\.html$ foo.cgi   [H=cgi-script] # jeu de règles assurant une compatibilité ascendante en réécrivant
# document.html en document.php si et seulement si document.php
# 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> @@ -295,7 +295,7 @@ une section de serveur virtuel pour le/les noms d'hôte non canoniques.

ServerName undesired.example.com ServerAlias example.com notthis.example.com - Redirect / http://www.example.com/ + Redirect "/" "http://www.example.com/" </VirtualHost> <VirtualHost *:80> @@ -308,7 +308,7 @@ type="section">If :

<If "%{HTTP_HOST} != 'www.example.com'"> - Redirect / http://www.example.com/ + Redirect "/" "http://www.example.com/" </If> @@ -317,7 +317,7 @@ type="section">If :

<If "%{SERVER_PROTOCOL} != 'HTTPS'"> - Redirect /admin/ https://www.example.com/admin/ + Redirect "/admin/" "https://www.example.com/admin/" </If> @@ -328,17 +328,17 @@ la recette suivante :

Pour les sites écoutant sur un port autre que 80:

-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]

Et pour un site écoutant sur le port 80

-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]

Si vous souhaitez que cette règle s'applique à tous les noms de @@ -349,9 +349,9 @@ RewriteRule ^/?(.*) http://www.example.com/$1 [L,R,NE] le jeu de règles suivants :

-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]

Vous pouvez utiliser ce jeu de règles aussi bien dans le fichier @@ -392,17 +392,17 @@ RewriteEngine on # on cherche tout d'abord dans dir1/... # ... et si on trouve, on est content et on arrête : -RewriteCond %{DOCUMENT_ROOT}/dir1/%{REQUEST_URI} -f -RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir1/$1 [L] +RewriteCond "%{DOCUMENT_ROOT}/dir1/%{REQUEST_URI}" -f +RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/dir1/$1" [L] # on cherche ensuite dans dir2/... # ... et si on trouve, on est content et on arrête : -RewriteCond %{DOCUMENT_ROOT}/dir2/%{REQUEST_URI} -f -RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir2/$1 [L] +RewriteCond "%{DOCUMENT_ROOT}/dir2/%{REQUEST_URI}" -f +RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/dir2/$1" [L] # sinon, on continue la recherche avec d'autres directives Alias # ou ScriptAlias, etc... -RewriteRule ^ - [PT] +RewriteRule "^" "-" [PT] @@ -436,9 +436,9 @@ RewriteRule ^ - [PT] HostnameLookups on RewriteEngine on -RewriteMap multiplex txt:/path/to/map.mirrors -RewriteCond %{REMOTE_HOST} ([a-z]+)$ [NC] -RewriteRule ^/(.*)$ ${multiplex:%1|http://www.example.com/}$1 [R,L] +RewriteMap multiplex "txt:/path/to/map.mirrors" +RewriteCond "%{REMOTE_HOST}" "([a-z]+)$ [NC]" +RewriteRule "^/(.*)$" "${multiplex:%1|http://www.example.com/}$1" [R,L] @@ -494,14 +494,14 @@ com http://www.example.com/
reçoivent la page foo.32.html. Tout ceci est effectué par le jeu de règles suivant :

-RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.* -RewriteRule ^foo\.html$ foo.NS.html [L] +RewriteCond "%{HTTP_USER_AGENT}" "^Mozilla/3.*" +RewriteRule "^foo\.html$" "foo.NS.html" [L] -RewriteCond %{HTTP_USER_AGENT} ^Lynx/ [OR] -RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12] -RewriteRule ^foo\.html$ foo.20.html [L] +RewriteCond "%{HTTP_USER_AGENT}" "^Lynx/" [OR] +RewriteCond "%{HTTP_USER_AGENT}" "^Mozilla/[12]" +RewriteRule "^foo\.html$" "foo.20.html" [L] -RewriteRule ^foo\.html$ foo.32.html [L] +RewriteRule "^foo\.html$" "foo.32.html" [L] @@ -533,14 +533,14 @@ RewriteRule ^foo\.html$ foo.32.html [L jeu de règles suivant, nous remplaçons /matous et /minettes par le canonique /chats.

- RewriteRule ^/(matous|minettes)/(.*) /chats/$2 [R] + RewriteRule "^/(matous|minettes)/(.*)" "/chats/$2" [R]
Discussion :
On serait mieux inspiré d'utiliser ici les directives Redirect ou RedirectMatch : - RedirectMatch ^/(matous|minettes)/(.*) /chats/$2 + RedirectMatch "^/(matous|minettes)/(.*)" "/chats/$2"
@@ -573,14 +573,13 @@ suivant :

RewriteEngine on -RewriteRule ^/$ /a-propos-de/ [R] +RewriteRule "^/$" "/a-propos-de/" [R]

Notez que l'on peut aussi y parvenir en utilisant la directive RedirectMatch :

-RedirectMatch ^/$ -http://example.com/a-propos-de/ +RedirectMatch "^/$" "http://example.com/a-propos-de/"

Notez aussi que cet exemple ne réécrit que l'URL racine. En d'autres termes, il réécrit une requête pour http://example.com/, @@ -612,8 +611,8 @@ existant effectivement comme une image, ou un fichier css. FallbackResource :

-<Directory /var/www/my_blog> - FallbackResource index.php +<Directory "/var/www/my_blog"> + FallbackResource "index.php" </Directory> @@ -622,12 +621,12 @@ les versions plus anciennes d'Apache, utiliser un jeu de règles du style :

-<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> @@ -635,7 +634,7 @@ les versions plus anciennes d'Apache, utiliser un jeu de règles du style que chaîne de paramètres à index.php, vous pouvez remplacer cette règle de réécriture par :

-RewriteRule (.*) index.php?$1 [PT,QSA] +RewriteRule "(.*)" "index.php?$1" [PT,QSA]

Notez que l'on peut utiliser ces jeux de règles aussi bien dans un fichier .htaccess que dans une section @@ -668,8 +667,8 @@ doubles perluettes '&&' dans les substitutions.

# Remove mykey=??? -RewriteCond %{QUERY_STRING} (.*(?:^|&))mykey=([^&]*)&?(.*)&?$ -RewriteRule (.*) $1?%1%3 +RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$" +RewriteRule "(.*)" "$1?%1%3" @@ -678,8 +677,8 @@ RewriteRule (.*) $1?%1%3 # 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] @@ -688,9 +687,9 @@ RewriteRule (.*) $1/products/%2/? [PT] # 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] @@ -700,7 +699,7 @@ RewriteRule (.*) - [F] # 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] diff --git a/docs/manual/rewrite/rewritemap.xml.fr b/docs/manual/rewrite/rewritemap.xml.fr index 86c2fdec36..1d1e6b6865 100644 --- a/docs/manual/rewrite/rewritemap.xml.fr +++ b/docs/manual/rewrite/rewritemap.xml.fr @@ -1,7 +1,7 @@ - + + @@ -83,8 +83,8 @@ RewriteEngine on RewriteMap lowercase int:tolower -RewriteCond ${lowercase:%{HTTP_HOST}} ^www\.([^.]+)\.example\.com$ -RewriteRule ^(.*) /home/%1/www$1 +RewriteCond "${lowercase:%{HTTP_HOST}}" "^www\.([^.]+)\.example\.com$" +RewriteRule "^(.*)" "/home/%1/www$1"
Discussion
@@ -147,9 +147,9 @@ UseCanonicalName Off # 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 @@ -161,17 +161,17 @@ RewriteEngine On # quelle casse ## on s'occupe tout d'abord des documents normaux :
-# 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]
@@ -202,20 +202,20 @@ RewriteEngine on 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]
-- 2.40.0