mod_sed
Filtre les contenus en entrée (requêtes) et en sortie (réponses) en utilisant la syntaxe de `sed`
Expérimental
mod_sed.c sed0.c sed1.c regexp.c regexp.h sed.h
sed_module
Disponible depuis la version 2.3 d'Apache

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.

# 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.

OutputSed
Commande sed pour le filtrage des contenus de type réponse
OutputSed commande-sed
directory
.htaccess

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

InputSed
Commande sed à exécuter pour le filtrage des données d'une requête (en général des données `POST`)
InputSed commande-sed
directory
.htaccess

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.