<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_substitute

Langues Disponibles:  en  |  fr 

Description:Effectue des op´┐Żrations de recherche/remplacement sur les corps de r´┐Żponses
Statut:Extension
Identificateur´┐Żde´┐ŻModule:substitute_module
Fichier´┐ŻSource:mod_substitute.c
Compatibilit´┐Ż:Disponible depuis la version 2.2.7 du serveur HTTP Apache

Sommaire

mod_substitute fournit un m´┐Żcanisme permettant d'effectuer des substitutions de cha´┐Żnes fixes ou d'expressions rationnelles sur les corps de r´┐Żponses.

Directives

top

Substitute Directive

Description:Mod´┐Żle de substition dans le contenu de la r´┐Żponse
Syntaxe:Substitute s/mod´┐Żle/substitution/[infq]
Contexte:r´┐Żpertoire, .htaccess
AllowOverride:FileInfo
Statut:Extension
Module:mod_substitute

La directive Substitute permet de sp´┐Żcifier un mod´┐Żle de recherche/remplacement ´┐Ż appliquer au corps de la r´┐Żponse.

La signification du mod´┐Żle peut ´┐Żtre modifi´┐Że via toute combinaison de ces drapeaux :

i
Effectue une comparaison sans tenir compte de la casse.
n
Par d´┐Żfaut, le mod´┐Żle est trait´┐Ż en tant qu'expression rationnelle. Le drapeau n force le traitement du mod´┐Żle en tant que cha´┐Żne fixe.
f
Avec le drapeau f, mod_substitute met ´┐Ż plat le r´┐Żsultat d'une substitution (les conteneurs ou buckets ne sont pas dissoci´┐Żs), ce qui permet ´┐Ż d'´┐Żventuelles substitutions ult´┐Żrieures de s'effectuer sur cette derni´┐Żre. C'est le comportement par d´┐Żfaut.
q
Avec le drapeau q, mod_substitute dissocie les conteneurs (ou buckets) apr´┐Żs chaque substitution. Ceci peut am´┐Żliorer la rapidit´┐Ż de la r´┐Żponse et diminuer la quantit´┐Ż de m´┐Żmoire utilis´┐Że, mais ne doit ´┐Żtre utilis´┐Ż que s'il n'existe aucune possibilit´┐Ż pour que le r´┐Żsultat d'une substitution ne corresponde au mod´┐Żle ou ´┐Ż l'expression rationnelle d'une substitution ult´┐Żrieure.

Exemple

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute s/foo/bar/ni
</Location>

Si le mod´┐Żle ou la cha´┐Żne de substitution contient un caract´┐Żre slash '/', il faut utiliser un autre d´┐Żlimiteur :

Exemple d'utilisation d'un d´┐Żlimiteur alternatif

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|<BR */?>|<br />|i"
</Location>

Lorsqu'on utilise des expressions rationnelles, on peut ins´┐Żrer des r´┐Żf´┐Żrences arri´┐Żres dans les op´┐Żrations de comparaison et de substitution, comme illustr´┐Ż dans l'exemple suivant :

Exemple d'utilisation de r´┐Żf´┐Żrences arri´┐Żres et de captures

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    # "foo=k,bar=k" -> "foo/bar=k"
    Substitute "s|foo=(\w+),bar=\1|foo/bar=$1"
</Location>

Un sc´┐Żnario courant d'utilisation de mod_substitute est la situation o´┐Ż un serveur frontal mandate des requ´┐Żtes pour un serveur d'arri´┐Żre-plan qui renvoie des documents HTML contenant des URLs int´┐Żgr´┐Żes cod´┐Żes en dur qui font r´┐Żf´┐Żrence ´┐Ż ce serveur d'arri´┐Żre-plan. Ces URLs ne fonctionnent pas pour l'utilisateur final car le serveur d'arri´┐Żre-plan est hors d'atteinte.

On peut, dans ce cas, utiliser mod_substutite pour r´┐Ż´┐Żcrire ces URLs afin qu'elles soit utilisables dans la partie situ´┐Że derri´┐Żre le mandataire :

R´┐Ż´┐Żcriture des URLs int´┐Żgr´┐Żes ´┐Ż un contenu mandat´┐Ż

ProxyPass /blog/ http://internal.blog.example.com
ProxyPassReverse /blog/ http://internal.blog.example.com/

Substitute "s|http://internal.blog.example.com/|http://www.example.com/blog/|i"

La directive ProxyPassReverse modifie tout en-t´┐Żte Location (redirection) envoy´┐Ż par le serveur d'arri´┐Żre-plan et, dans cet exemple, la directive Substitute se charge ´┐Ż son tour de la modification de la r´┐Żponse HTML.

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.