Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

# Module Apache mod_sed

Description: | Filtre les contenus en entrée (requêtes) et en sortie (réponses) en utilisant la syntaxe de `sed`
Statut: |
Identificateur de Module: | sed_module
Fichier Source: | mod_sed.c sed0.c sed1.c regexp.c regexp.h sed.h
Compatibilité: | Disponible depuis la version 2.3 d'Apache

### Sommaire

`mod_sed` est un filtre de contenu "in-process". Le filtre `mod_sed` fournit les commandes d'édition de `sed` implémentées par le programme `sed` de Solaris 10 comme décrit dans la page de manuel. Cependant, à la différence de `sed`, `mod_sed` ne reçoit pas de données sur son entrée standard. Au lieu de cela, le filtre agit sur les données échangées entre le client et le serveur. `mod_sed` peut être utilisé comme filtre en entrée ou en sortie. `mod_sed` est un filtre de contenu, ce qui signifie qu'on ne peut pas l'utiliser pour modifier les en-têtes http du client ou du serveur.

Le filtre en sortie `mod_sed` accepte un tronçon de données, exécute le script `sed` sur ces données, puis génère une sortie qui est transmise au filtre suivant dans la chaîne.

Le filtre en entrée `mod_sed` reçoit des données en provenance du filtre suivant dans la chaîne, exécute les scripts `sed`, et renvoie les données générées au filtre appelant dans la chaîne de filtrage.

Les filtres en entrée ou en sortie ne traitent les données que si des caractères newline sont détectés dans le contenu à filtrer. A la fin des données, ce qui reste est traité comme la dernière ligne.

Vous trouverez sur le blog de l'auteur un article en forme de tutoriel, ainsi que les raisons pour lesquelles ce filtre est plus puissant qu'une simple recherche/remplacement de chaîne ou d'expression rationnelle.

### Sujets

- Exemple de configuration
- Commandes sed

### Directives

### Traitement des bugs

- Journal des modifications de httpd
- Problèmes connus
- Signaler un bug

## Exemple de configuration

### Ajout d'un filtre en sortie

    # Dans l'exemple suivant, le filtre sed va remplacer la chaîne
    	 # "monday" par "MON" et la chaîne "sunday" par "SUN" dans les
    	 # documents html avant de les envoyer au client.
    <Directory "/var/www/docs/sed">
        AddOutputFilter Sed html
        OutputSed "s/monday/MON/g"
        OutputSed "s/sunday/SUN/g"
    </Directory>

### Ajout d'un filtre en entrée

             # Dans l'exemple suivant, le filtre sed va remplacer la chaîne
    	 # "monday" par "MON" et la chaîne "sunday" par "SUN" dans les
    	 # données POST envoyées à PHP.
            <Directory "/var/www/docs/sed">
        AddInputFilter Sed php
        InputSed "s/monday/MON/g"
        InputSed "s/sunday/SUN/g"
    </Directory>

## Commandes sed

Vous trouverez tous les détails à propos de la commande `sed` dans sa page de manuel.

`b`
  Saut vers le label spécifié (similaire à goto).
`h`
  Copie la ligne courante dans le tampon.
`H`
  Ajoute la ligne courante au tampon.
`g`
  Copie le contenu du tampon dans la ligne courante.
`G`
  Ajoute le contenu du tampon à la ligne courante.
`x`
  Echange les contenus du tampon et de la ligne courante.

## Directive InputSed

Description: | Commande sed à exécuter pour le filtrage des données d'une requête (en général des données `POST`)
Syntaxe: | `InputSed commande-sed`
Contexte: | répertoire, .htaccess
Statut: |
Module: | mod_sed

La directive `InputSed` permet de spécifier la commande sed à exécuter pour le filtrage des données (en général des données `POST`) d'une requête.

## Directive OutputSed

Description: | Commande sed pour le filtrage des contenus de type réponse
Syntaxe: | `OutputSed commande-sed`
Contexte: | répertoire, .htaccess
Statut: |
Module: | mod_sed

La directive `OutputSed` permet de spécifier la commande `sed` à exécuter dans le cadre du traitement d'une réponse.