From ad2932c40fe1670739e128aa29468eb2ec5fc94d Mon Sep 17 00:00:00 2001 From: Rich Bowen Date: Mon, 2 Nov 2009 19:01:01 +0000 Subject: [PATCH] These are all replaced by intro.* rather than rewrite_intro.* git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@832053 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/rewrite/rewrite_intro.html | 9 - docs/manual/rewrite/rewrite_intro.html.en | 319 ------------------- docs/manual/rewrite/rewrite_intro.html.fr | 339 --------------------- docs/manual/rewrite/rewrite_intro.xml.meta | 13 - 4 files changed, 680 deletions(-) delete mode 100644 docs/manual/rewrite/rewrite_intro.html delete mode 100644 docs/manual/rewrite/rewrite_intro.html.en delete mode 100644 docs/manual/rewrite/rewrite_intro.html.fr delete mode 100644 docs/manual/rewrite/rewrite_intro.xml.meta diff --git a/docs/manual/rewrite/rewrite_intro.html b/docs/manual/rewrite/rewrite_intro.html deleted file mode 100644 index 0e3459c3a8..0000000000 --- a/docs/manual/rewrite/rewrite_intro.html +++ /dev/null @@ -1,9 +0,0 @@ -# GENERATED FROM XML -- DO NOT EDIT - -URI: rewrite_intro.html.en -Content-Language: en -Content-type: text/html; charset=ISO-8859-1 - -URI: rewrite_intro.html.fr -Content-Language: fr -Content-type: text/html; charset=ISO-8859-1 diff --git a/docs/manual/rewrite/rewrite_intro.html.en b/docs/manual/rewrite/rewrite_intro.html.en deleted file mode 100644 index 442917544d..0000000000 --- a/docs/manual/rewrite/rewrite_intro.html.en +++ /dev/null @@ -1,319 +0,0 @@ - - - -Apache mod_rewrite Introduction - Apache HTTP Server - - - - - -
<-
-
-Apache > HTTP Server > Documentation > Version 2.3 > Rewrite

Apache mod_rewrite Introduction

-
-

Available Languages:  en  | - fr 

-
- -

This document supplements the mod_rewrite -reference documentation. It -describes the basic concepts necessary for use of -mod_rewrite. Other documents go into greater detail, -but this doc should help the beginner get their feet wet. -

-
- -
top
-
-

Introduction

-

The Apache module mod_rewrite is a very powerful and -sophisticated module which provides a way to do URL manipulations. With -it, you can do nearly all types of URL rewriting that you may need. It -is, however, somewhat complex, and may be intimidating to the beginner. -There is also a tendency to treat rewrite rules as magic incantation, -using them without actually understanding what they do.

- -

This document attempts to give sufficient background so that what -follows is understood, rather than just copied blindly. -

- -

Remember that many common URL-manipulation tasks don't require the -full power and complexity of mod_rewrite. For simple -tasks, see mod_alias and the documentation -on mapping URLs to the -filesystem.

- -

Finally, before proceeding, be sure to configure -the RewriteLog. Although -this log file can give an overwhelming amount of information, it is -indispensable in debugging problems with mod_rewrite -configuration, since it will tell you exactly how each rule is -processed.

- -
-

The RewriteLog directive cannot be used in .htaccess files, but can -only be set in the main server configuration file.

-
-
top
-
-

Regular Expressions

- -

mod_rewrite uses the Perl Compatible -Regular Expression vocabulary. In this document, we do not attempt -to provide a detailed reference to regular expressions. For that, we -recommend the PCRE man pages, the -Perl regular -expression man page, and Mastering -Regular Expressions, by Jeffrey Friedl.

- -

In this document, we attempt to provide enough of a regex vocabulary -to get you started, without being overwhelming, in the hope that -RewriteRules will be scientific -formulae, rather than magical incantations.

- -

Regex vocabulary

- -

The following are the minimal building blocks you will need, in order -to write regular expressions and RewriteRules. They certainly do not -represent a complete regular expression vocabulary, but they are a good -place to start, and should help you read basic regular expressions, as -well as write your own.

- - - - - - - - - - - - - - - - - - -
CharacterMeaningExample
.Matches any single -characterc.t will match cat, -cot, cut, etc.
+Repeats the previous match one or more -timesa+ matches a, aa, -aaa, etc
*Repeats the previous match zero or more -times.a* matches all the same things -a+ matches, but will also match an empty string.
?Makes the match optional. -colou?r will match color and colour.
^Called an anchor, matches the beginning -of the string^a matches a string that begins with -a
$The other anchor, this matches the end of -the string.a$ matches a string that ends with -a.
( )Groups several characters into a single -unit, and captures a match for use in a backreference.(ab)+ -matches ababab - that is, the + applies to the group. -For more on backreferences see below.
[ ]A character class - matches one of the -charactersc[uoa]t matches cut, -cot or cat.
[^ ]Negative character class - matches any character not specifiedc[^/]t matches cat or c=t but not c/t
- -

In mod_rewrite the ! character can be -used before a regular expression to negate it. This is, a string will -be considered to have matched only if it does not match the rest of -the expression.

- - - -

Regex Back-Reference Availability

- -

One important thing here has to be remembered: Whenever you - use parentheses in Pattern or in one of the - CondPattern, back-references are internally created - which can be used with the strings $N and - %N (see below). These are available for creating - the strings Substitution and TestString. - Figure 2 shows to which locations the back-references are - transferred for expansion.

- -

- [Needs graphics capability to display]
- Figure 2: The back-reference flow through a rule. -

- - -
top
-
-

RewriteRule basics

-

A RewriteRule consists -of three arguments separated by spaces. The arguments are

-
    -
  1. Pattern: which incoming URLs should be affected by the rule;
  2. -
  3. Substitution: where should the matching requests be sent;
  4. -
  5. [flags]: options affecting the rewritten request.
  6. -
- -

The Pattern is always a regular -expression matched against the URL-Path of the incoming request -(the part after the hostname but before any question mark indicating -the beginning of a query string).

- -

The Substitution can itself be one of three things:

- -
-
A full filesystem path to a resource
-
-

-RewriteRule ^/games.* /usr/local/games/web -

-

This maps a request to an arbitrary location on your filesystem, much -like the Alias directive.

-
- -
A web-path to a resource
-
-

-RewriteRule ^/foo$ /bar -

-

If DocumentRoot is set -to /usr/local/apache2/htdocs, then this directive would -map requests for http://example.com/foo to the -path /usr/local/apache2/htdocs/bar.

-
- -
An absolute URL
-
-

-RewriteRule ^/product/view$ http://site2.example.com/seeproduct.html [R] -

-

This tells the client to make a new request for the specified URL.

-
-
- -

The Substitution can also -contain back-references to parts of the incoming URL-path -matched by the Pattern. Consider the following:

-

-RewriteRule ^/product/(.*)/view$ /var/web/productdb/$1 -

-

The variable $1 will be replaced with whatever text -was matched by the expression inside the parenthesis in -the Pattern. For example, a request -for http://example.com/product/r14df/view will be mapped -to the path /var/web/productdb/r14df.

- -

If there is more than one expression in parenthesis, they are -available in order in the -variables $1, $2, $3, and so -on.

- - -
top
-
-

Rewrite Flags

-

The behavior of a RewriteRule can be modified by the -application of one or more flags to the end of the rule. For example, the -matching behavior of a rule can be made case-insensitive by the -application of the [NC] flag: -

-

-RewriteRule ^puppy.html smalldog.html [NC] -

- -

For more details on the available flags, their meanings, and -examples, see the Rewrite Flags document.

- -
top
-
-

Rewrite conditions

-

One or more RewriteCond -directives can be used to restrict the types of requests that will be -subject to the -following RewriteRule. The -first argument is a variable describing a characteristic of the -request, the second argument is a regular -expression that must match the variable, and a third optional -argument is a list of flags that modify how the match is evaluated.

- -

For example, to send all requests from a particular IP range to a -different server, you could use:

-

-RewriteCond %{REMOTE_ADDR} ^10\.2\.
-RewriteRule (.*) http://intranet.example.com$1 -

- -

When more than -one RewriteCond is -specified, they must all match for -the RewriteRule to be -applied. For example, to deny requests that contain the word "hack" in -their query string, except if they also contain a cookie containing -the word "go", you could use:

-

-RewriteCond %{QUERY_STRING} hack
-RewriteCond %{HTTP_COOKIE} !go
-RewriteRule .* - [F] -

-

Notice that the exclamation mark specifies a negative match, so the rule is only applied if the cookie does not contain "go".

- -

Matches in the regular expressions contained in -the RewriteConds can be -used as part of the Substitution in -the RewriteRule using the -variables %1, %2, etc. For example, this -will direct the request to a different directory depending on the -hostname used to access the site:

-

-RewriteCond %{HTTP_HOST} (.*)
-RewriteRule ^/(.*) /sites/%1/$1 -

-

If the request was for http://example.com/foo/bar, -then %1 would contain example.com -and $1 would contain foo/bar.

- - - -
top
-
top
-
-

.htaccess files

- -

Rewriting is typically configured in the main server configuration -setting (outside any <Directory> section) or -inside <VirtualHost> -containers. This is the easiest way to do rewriting and is -recommended. It is possible, however, to do rewriting -inside <Directory> -sections or .htaccess -files at the expense of some additional complexity. This technique -is called per-directory rewrites.

- -

The main difference with per-server rewrites is that the path -prefix of the directory containing the .htaccess file is -stripped before matching in -the RewriteRule. In addition, the RewriteBase should be used to assure the request is properly mapped.

- -
-
-

Available Languages:  en  | - fr 

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/rewrite_intro.html.fr b/docs/manual/rewrite/rewrite_intro.html.fr deleted file mode 100644 index ad355b13c4..0000000000 --- a/docs/manual/rewrite/rewrite_intro.html.fr +++ /dev/null @@ -1,339 +0,0 @@ - - - -Introduction au module Apache mod_rewrite - Serveur Apache HTTP - - - - - -
<-
-
-Apache > Serveur HTTP > Documentation > Version 2.3 > Rewrite

Introduction au module Apache mod_rewrite

-
-

Langues Disponibles:  en  | - fr 

-
- -

Ce document est un complément à la documentation de référence du module -mod_rewrite. Il décrit les concepts de base dont la -connaissance est nécessaire pour l'utilisation de -mod_rewrite. D'autres documents entrent d'avantage dans -les détails, mais celui-ci devrait aider le débutant à se mouiller les -pieds. -

-
- -
top
-
-

Introduction

-

Le module Apache mod_rewrite est un module puissant -et sophistiqué qui permet la réécriture des URLs. Grâce à lui, vous -pouvez effectuer quasiment tous les types de réécriture d'URLs dont vous -avez besoin. Il est cependant assez complexe, et peut paraître -intimidant au débutant. Certains ont aussi tendance à traiter les -règles de réécriture comme des incantations magiques, et à les utiliser -sans vraiment comprendre leur manière d'agir.

- -

Ce document a pour ambition d'être suffisamment explicite pour -permettre la compréhension, et non la copie en aveugle, de ce qui suit. -

- -

Gardez à l'esprit que de nombreuses tâches de manipulation d'URLs -courantes n'ont pas besoin de la puissance et de la complexité de -mod_rewrite. Pour les tâches simples, voir -mod_alias et la documentation sur la Mise en correspondance des URLs avec le -système de fichiers.

- -

Enfin, avant de procéder, assurez-vous d'avoir configuré la directive -RewriteLog. Bien que ce -fichier journal puisse contenir une quantité impressionnante d'informations, -il s'avère indispensable pour le débogage des problèmes avec la -configuration de mod_rewrite, car il vous indiquera -exactement la manière dont chaque règle est traitée.

- -
-

On ne peut pas utiliser la directive RewriteLog dans les fichiers -.htaccess, car elle doit être définie au niveau du fichier -de configuration du serveur principal.

-
-
top
-
-

Expressions rationnelles

- -

mod_rewrite utilise le vocabulaire des Expressions rationnelles compatibles Perl. -Ce document n'a pas pour prétention d'être une référence détaillée des -expressions rationnelles. A cet effet, nous recommandons les pages de manuel de PCRE, la page de manuel des -expressions rationnelles Perl, et l'ouvrage Mastering -Regular Expressions, by Jeffrey Friedl.

- -

Dans ce document, nous avons pour but de vous fournir suffisamment de -vocabulaire des expressions rationnelles pour vous mettre le pied à -l'étrier, sans être dépassé, en espérant que les directives RewriteRule vous apparaîtront comme des -formules scientifiques, plutôt que comme des incantations magiques.

- -

Vocabulaire des expressions rationnelles

- -

Vous trouverez dans ce qui suit le minimum à connaître pour être en -mesure d'écrire des expressions rationnelles et des règles RewriteRule. Ceci ne représente -certainement pas un vocabulaire des expressions rationnelles complet, -mais constitue un bon point de départ, et devrait vous aider à -déchiffrer les expressions rationnelles simples, et à écrire vos propres -expressions.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MotifSignificationExemple
.Correspond à tout caractère unique -c.t correspondra à cat, -cot, cut, etc.
+Répète le caractère de correspondance -précédent une ou plusieurs foisa+ correspond à a, aa, -aaa, etc.
*Répète le caractère de correspondance -précédent zéro ou plusieurs foisa* correspond à tout ce à quoi correspond -a+, mais correspond aussi à la chaîne vide.
?Rend la correspondance optionnelle. -colou?r correspondra à color et colour.
^Appelé ancrage, correspond au début de la -chaîne^a correspond à une chaîne qui commence par -a
$L'autre ancrage, correspond à la fin de -la chaîne.a$ correspond à une chaîne qui se termine par -a.
( )Regroupe plusieurs caractères en une -seule entité, et conserve une correspondance à des fins d'utilisation -dans une référence arrière.(ab)+ -correspond à ababab - à savoir, le + -s'applique au groupe. -Pour plus de détails sur les références arrières, voir ci-dessous.
[ ]Une classe de caractères - correspond à -un des caractères de la classec[uoa]t correspond à cut, -cot ou cat.
[^ ]Négation de la classe de caractères - -correspond à tout caractère ne faisant pas partie de la classec[^/]t correspond à cat ou -c=t mais pas à c/t
- -

Avec mod_rewrite, le caractère ! peut -préfixer une expression rationnelle afin d'en exprimer la négation. -Autrement dit, une chaîne ne correspondra que si elle ne correspond pas -à l'expression située après le !.

- - - -

Disponibilité des références -arrières dans les expressions rationnelles

- -

Vous devez vous souvenir d'une chose importante : chaque fois - que vous utilisez des parenthèses dans un Modèle ou dans - un des modèles de conditions, des références arrières - sont créées en interne et peuvent être rappelées via les chaînes - $N et %N (voir ci-dessous). Ces - références sont disponibles lors de la création des chaînes de - Substitution et des Chaînes de test. La figure 2 - montre à quels endroits les références arrières sont suceptibles - d'être développées.

- -

- [Pas affichable sans support des images]
- Figure 2: Le cheminement d'une référence arrière à - travers une règle. -

- - -
top
-
-

Les bases des règles de réécriture

-

Une règle de réécriture RewriteRule est constituée de trois -arguments séparés par des espaces. Les arguments sont :

-
    -
  1. Modèle: le modèle des URLs auxquelles la règle doit -s'appliquer;
  2. -
  3. Substitution: vers quoi la requête correspondante doit être -transformée;
  4. -
  5. [drapeaux]: options affectant la requête réécrite.
  6. -
- -

Le Modèle est toujours une expression -rationnelle comparée au chemin de l'URL de la requête entrante (la -partie située après le nom d'hôte mais avant tout point d'interrogation -qui indique le début d'une chaîne de requête).

- -

La chaîne de Substitution peut, quant à elle, être de -trois types :

- -
-
Un chemin complet du système de fichiers vers une ressource
-
-

-RewriteRule ^/jeux.* /usr/local/jeux/web -

-

Ceci peut faire correspondre une requête à toute localisation voulue de -votre système de fichiers, un peu comme la directive Alias.

-
- -
Un chemin web vers une ressource
-
-

-RewriteRule ^/foo$ /bar -

-

Si la directive DocumentRoot a -pour valeur /usr/local/apache2/htdocs, cette règle va faire -correspondre les requêtes pour http://example.com/foo au -chemin /usr/local/apache2/htdocs/bar.

-
- -
Une URL absolue
-
-

-RewriteRule ^/produits/vues$ http://site2.exemple.com/voirproduits.html [R] -

-

Ceci informe le client qu'il doit effectuer une nouvelle requête vers -l'URL spécifiée.

-
-
- -

La chaîne de Substitution peut aussi contenir des -références arrières vers des parties du chemin d'URL entrant -correspondant au Modèle. Considérons ce qui suit :

-

-RewriteRule ^/produits/(.*)/view$ /var/web/produitsdb/$1 -

-

La variable $1 sera remplacée par tout texte -correspondant à l'expression située entre les parenthèses dans le -Modèle. Par exemple, une requête pour -http://example.com/produits/r14df/vue correspondra au -chemin /var/web/produitsdb/r14df.

- -

S'il y a plus d'une expression entre parenthèses, elle seront -accessibles selon leur ordre d'apparition via les variables -$1, $2, $3, etc...

- - -
top
-
-

Drapeaux de réécriture

-

Le comportement d'une règle RewriteRule peut être modifié par la -présence d'un ou plusieurs drapeaux en fin de règle. Par exemple, les -conditions de correspondance d'une règle peuvent être rendues -insensibles à la casse par la présence du drapeau [NC] : -

-

-RewriteRule ^puppy.html petitchien.html [NC] -

- -

Pour une liste des drapeaux disponibles, leurs significations, et des -exemples, voir le document Drapeaux de -réécriture.

- -
top
-
-

Conditions de réécriture

-

Il est possible d'utiliser une ou plusieurs directives RewriteCond pour restreindre les types -de requêtes auxquelles devra s'appliquer la règle RewriteRule suivante. Le premier -argument est une variable décrivant une caractéristique de la requête, -le second argument est une expression rationnelle -qui doit correspondre à la variable, et un troisième argument optionnel -est une liste de drapeaux qui modifient la manière dont la -correspondance est évaluée.

- -

Par exemple, pour renvoyer toutes les requêtes en provenance d'une -certaine tranche d'adresses IP vers un autre serveur, vous pouvez -utiliser :

-

-RewriteCond %{REMOTE_ADDR} ^10\.2\.
-RewriteRule (.*) http://intranet.exemple.com$1 -

- -

Si vous spécifiez plus d'une directive RewriteCond, ces directives -doivent toutes être satisfaites pour que la règle RewriteRule suivante s'applique. Par exemple, -pour interdire les requêtes qui contiennent le mot "hack" dans la chaîne -de requête, sauf si elles contiennent aussi un cookie contenant le mot -"go", vous pouvez utiliser :

-

-RewriteCond %{QUERY_STRING} hack
-RewriteCond %{HTTP_COOKIE} !go
-RewriteRule .* - [F] -

-

Notez que le point d'exclamation indique une correspondance négative -; ainsi, la règle n'est appliquée que si le cookie ne contient pas "go"

- -

Les correspondances dans les expressions rationnelles contenues dans -les directives RewriteCond -peuvent constituer des parties de la chaîne de Substitution -de la règle RewriteRule via -les variables %1, %2, etc... Par -exemple, ce qui suit va diriger la requête vers un répertoire différent -en fonction du nom d'hôte utilisé pour accéder au site :

-

-RewriteCond %{HTTP_HOST} (.*)
-RewriteRule ^/(.*) /sites/%1/$1 -

-

Si la requête concernait http://example.com/foo/bar, -alors %1 contiendrait example.com et -$1 contiendrait foo/bar.

- - - -
top
-
-

Tables de réécriture

-

Voir la directive -RewriteMap.

-
top
-
-

Fichiers .htaccess

- -

La réécriture est en général définie au niveau de la configuration du -serveur principal (en dehors de toute section <Directory>) ou dans une section <VirtualHost>. Il s'agit là de la -manière la plus simple de mettre en oeuvre la réécriture et nous la -recommandons. Il est possible, cependant, de mettre en oeuvre la -réécriture au sein d'une section <Directory> ou d'un fichier .htaccess ; ce type de -configuration est cependant plus complexe. Cette technique est appelée -réécriture par répertoire.

- -

La principale différence avec les réécritures au niveau du serveur réside -dans le fait que le préfixe du chemin du répertoire contenant le fichier -.htaccess est supprimé avant la mise en correspondance dans -la règle RewriteRule. De -plus, on doit utiliser la directive RewriteBase pour s'assurer que la -requête est correctement mise en correspondance.

- -
-
-

Langues Disponibles:  en  | - fr 

-
- \ No newline at end of file diff --git a/docs/manual/rewrite/rewrite_intro.xml.meta b/docs/manual/rewrite/rewrite_intro.xml.meta deleted file mode 100644 index 4d31be6f51..0000000000 --- a/docs/manual/rewrite/rewrite_intro.xml.meta +++ /dev/null @@ -1,13 +0,0 @@ - - - - - rewrite_intro - /rewrite/ - .. - - - en - fr - - -- 2.40.0