Filtres
Apache 2 a introduit un nouveau mécanisme appelé « filtre » ainsi qu’une refonte des vues multiples. La documentation indique :
Un filtre est un processus qui s’applique aux données envoyées ou reçues par le serveur. Les données envoyées par les clients au serveur sont traitées par des filtres d’entrée, tandis que les données envoyées par le serveur aux clients sont traitées par des filtres de sortie. On peut appliquer plusieurs filtres aux données et leur ordre d’application peut être indiqué explicitement.
Les filtres sont utilisés en interne par Apache pour effectuer des opérations comme le découpage et la gestion des requêtes d’intervales d’octets ( byte-range ). De plus, des modules peuvent fournir des filtres que l’on peut sélectionner à l’exécution grâce à des directives de configuration. L’ensemble des filtres s’appliquant à des données peut être manipulé par les directives SetInputFilter et SetOutputFilter.
Actuellement, le seul filtre configurable inclus dans la distribution Apache est INCLUDES, qui est fourni par le module mod-include afin de traiter les sorties pour SSI (Server Side Includes). Il existe également un module expérimental nommé mod_ext_filter, qui permet d’utiliser des programmes externes comme filtres.
Il y a un exemple de filtre qui met le texte en majuscules. Le répertoire .site.filter/htdocs contient deux fichiers, 1.txt et 1.html, qui contiennent le même texte :
BIEN LE BONJOUR DE site.filter
Le fichier de configuration est le suivant :
User webuser
Group webgroup
Listen 80
ServerName my586
AddOutputFilter CaseFilter html
DocumentRoot /usr/www/APACHE3/site.filter/htdocs
Lorsque l’on accède à ce site, on se trouve dans un répertoire. Si nous choisissons 1.txt, le texte précédent apparaît ; si l’on choisit 1.html, on constate qu’il est passé par le filtre et que tout son contenu est maintenant en majuscules :
BIEN LE BONJOUR DE SITE.FILTER
Les directives concernées sont les suivantes :
AddInputFilter
AddInputFilter filtre[;filtre...] extension [extension ...]
Répertoire, fichiers, conteneur Location, .htaccess
Cette directive n’est disponible qu’à partir d’Apache 2.0.26.
AddInputFilter associe les extensions de fichier indiquées aux filtres qui traitent les requêtes de clients et les entrées POST reçues par le serveur. Ce traitement s’ajoute à celui des autres filtres définis ailleurs, par la directive SetInputFilter notamment. Cette association se combine à celles déjà en place et surcharge celles qui existent déjà pour la même extension.
Si plusieurs filtres sont spécifiés, ils doivent être séparés par des points-virgules et placés dans l’ordre où ils doivent s’appliquer. Les paramètres de cette directive sont insensibles à la casse et les extensions peuvent, ou non, être préfixées d’un point.
AddOutputFilter
AddOutputFilter filtre[;filtre...] extension [extension ...]
Répertoire, fichiers, conteneur Location, .htaccess
Cette directive n’est disponible qu’à partir d’Apache 2.0.26.
La directive AddOutputFilter associe les extensions indiquées aux filtres qui traitent les réponses du serveur avant qu’elles soient envoyées au client. Ces filtres s’ajoutent à ceux qui ont déjà été définis, par la directive SetOutputFilter notamment. Cette association se combine à celles déjà en place et surcharge celles qui existent déjà pour la même extension. La configuration suivante, par exemple, entraîne le traitement des Server-Side Includes de tous les fichiers .shtml.
AddOutputFilter INCLUDES shtml
Si plusieurs filtres sont précisés, ils doivent être séparés par des points-virgules et placés dans l’ordre où ils doivent s’appliquer. Les paramètres de cette directive sont insensibles à la casse et les extensions peuvent, ou non, être préfixées d’un point.
SetInputFilter
SetInputFilter filtre[;filtre...]
Configuration du serveur, hôte virtuel, répertoire, .htaccess
La directive SetInputFilter configure les filtres qui traitent les requêtes des clients et les entrées POST reçues par le serveur. Ce traitement s’ajoute à celui des autres filtres définis ailleurs, notamment par la directive AddInputFilter.
Si plusieurs filtres sont précisés, ils doivent être séparés par des points-virgules et placés dans l’ordre où ils doivent s’appliquer.
SetOutputFilter
SetOutputFilter filtre [filtre] ...
Configuration du serveur, hôte virtuel, répertoire, .htaccess
La directive SetOutputFilter configure les filtres qui traitent les réponses du serveur avant qu’elles ne soient envoyées au client. Ce traitement s’ajoute à celui des autres filtres définis ailleurs, notamment par la directive AddOutputFilter.
La configuration suivante, par exemple, traite tous les fichiers du répertoire /www/data/ pour Server-Side Includes.
<Directory /www/data/>
SetOutputFilter INCLUDES
</Directory>
Si plusieurs filtres sont précisés, ils doivent être séparés par des points-virgules et placés dans l’ordre où ils doivent s’appliquer.
RemoveInputFilter
RemoveInputFilter extension [extension] ...
Répertoire, .htaccess
Cette directive n’est disponible qu’à partir d’Apache 2.0.26.
La directive RemoveInputFilter supprime toutes les associations de filtres d’entrée aux fichiers portant les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler les associations héritées de répertoires parents ou de la configuration du serveur.
Les extensions passées en paramètres sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.
RemoveOutputFilter
RemoveOutputFilter extension [extension] ...
Répertoire, .htaccess
Cette directive n’est disponible qu’à partir d’Apache 2.0.26.
La directive RemoveOutputFilter supprime toutes les associations de filtres de sortie aux fichiers portant les extensions indiquées. Cela permet aux fichiers .htaccess des sous-répertoires d’annuler les associations héritées de répertoires parents ou de la configuration du serveur.
Les extensions passées en paramètres sont insensibles à la casse et peuvent, ou non, être préfixées d’un point.