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

Module Apache mod_include

Langues Disponibles:  en  |  fr  |  ja 

Description:Documents html interpr´┐Żt´┐Żs par le serveur (Server Side Includes ou SSI)
Statut:Base
Identificateur´┐Żde´┐ŻModule:include_module
Fichier´┐ŻSource:mod_include.c

Sommaire

Ce module fournit un filtre qui va traiter les fichiers avant de les envoyer au client. Le traitement est contr´┐Żl´┐Ż via des commentaires SGML sp´┐Żcialement format´┐Żs, aussi nomm´┐Żs ´┐Żl´┐Żments. Ces ´┐Żl´┐Żments permettent l'insertion conditionnelle de texte, l'inclusion d'autres fichiers ou programmes, ainsi que la d´┐Żfinition et l'affichage de variables d'environnement.

Directives

Sujets

Voir aussi

top

Activation des SSI

Les SSI sont impl´┐Żment´┐Żs par le filtre INCLUDES. Si des documents contenant des directives SSI poss´┐Żdent une extension .shtml, les directives suivantes indiqueront ´┐Ż Apache de les interpr´┐Żter et d'assigner le type MIME text/html au document obtenu :

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

L'option suivante doit ´┐Żtre d´┐Żfinie pour les r´┐Żpertoires qui contiennent les fichiers shtml (en g´┐Żn´┐Żral dans une section <Directory>, mais cette option peut ´┐Żgalement ´┐Żtre d´┐Żfinie dans un fichier .htaccess si AllowOverride Options a ´┐Żt´┐Ż d´┐Żfini pour le r´┐Żpertoire consid´┐Żr´┐Ż) :

Options +Includes

Pour des raisons de compatibilit´┐Ż ascendante, le gestionnaire server-parsed peut aussi activer le filtre INCLUDES. Ainsi, Apache va activer le filtre INCLUDES pour tout document de type MIME text/x-server-parsed-html ou text/x-server-parsed-html3 (et le document obtenu aura pour type MIME text/html).

Pour plus d'informations, voyez notre Tutoriel SSI.

top

PATH_INFO et SSI

Les fichiers trait´┐Żs dans le cadre des SSI n'acceptent plus par d´┐Żfaut les requ´┐Żtes avec PATH_INFO (les informations relatives au chemin en fin de requ´┐Żte). La directive AcceptPathInfo permet de configurer le serveur de fa´┐Żon ´┐Ż ce qu'il accepte ce genre de requ´┐Żte.

top

El´┐Żments disponibles

Le document est interpr´┐Żt´┐Ż comme un document HTML, avec des commandes sp´┐Żciales incluses sous forme de commentaires SGML. La syntaxe d'une commande est la suivante :

<!--#´┐Żl´┐Żment attribut=valeur attribut=valeur ... -->

Les valeurs sont souvent entour´┐Żes de guillemets, mais on peut aussi utiliser des apostrophes (') ou des apostrophes inverses (`). De nombreuses commandes n'acceptent qu'une seule paire attribut-valeur. Notez que le terminateur de commentaire (-->) doit ´┐Żtre pr´┐Żc´┐Żd´┐Ż d'un espace afin d'´┐Żtre s´┐Żr qu'il ne soit pas consid´┐Żr´┐Ż comme un ´┐Żl´┐Żment de commande SSI. Notez aussi que le d´┐Żlimiteur de d´┐Żbut <!--# est un ´┐Żl´┐Żment de commande et ne doit donc pas contenir d'espace.

La table suivante contient la liste des ´┐Żl´┐Żments autoris´┐Żs :

El´┐ŻmentDescription
config configure les formats de sortie
echo affiche le contenu de variables
exec ex´┐Żcute des programmes externes
fsize affiche la taille d'un fichier
flastmod affiche la date de derni´┐Żre modification d'un fichier
include inclut un fichier
printenv affiche toutes les variables disponibles
set d´┐Żfinit la valeur d'une variable

Les ´┐Żl´┐Żments SSI peuvent ´┐Żtre d´┐Żfinis par d'autres modules que mod_include. ´┐Ż ce titre, l'´┐Żl´┐Żment exec est fourni par mod_cgi, et ne sera disponible que si ce module est charg´┐Ż.

L'´┐Żl´┐Żment config

Cette commande contr´┐Żle divers aspects de l'interpr´┐Żtation. Les attributs valides sont :

echomsg (Versions 2.1 et sup´┐Żrieures d'Apache)

La valeur est un message qui sera envoy´┐Ż au client si l'´┐Żl´┐Żment echo tente d'afficher le contenu d'une variable non d´┐Żfinie. Cet attribut l'emporte sur toute directive SSIUndefinedEcho.

<!--#config echomsg="[Valeur non d´┐Żfinie]" -->

errmsg

La valeur est un message qui sera envoy´┐Ż au client si une erreur survient lors de l'interpr´┐Żtation du document. Cet attribut l'emporte sur toute directive SSIErrorMsg.

<!--#config errmsg="[Zut, quelque chose s'est mal pass´┐Ż.]" -->

sizefmt

La valeur d´┐Żfinit l'unit´┐Ż employ´┐Że lors de l'affichage de la taille d'un fichier. Les valeurs possibles sont bytes pour une taille en octets, ou abbrev pour une taille en Ko ou Mo selon son importance ; par exemple, une taille de 1024 octets sera affich´┐Że sous la forme "1K".

<!--#config sizefmt="abbrev" -->

timefmt

La valeur est une cha´┐Żne que pourra utiliser la fonction de la biblioth´┐Żque standard strftime(3) lors de l'affichage des dates.

<!--#config timefmt=""%R, %B %d, %Y"" -->

L'´┐Żl´┐Żment echo

Cette commande affiche le contenu d'une des variables include d´┐Żfinies ci-dessous. Si la variable n'est pas d´┐Żfinie, le r´┐Żsultat est d´┐Żtermin´┐Ż par la valeur de la directive SSIUndefinedEcho. Le format d'affichage des dates est d´┐Żfini par l'attribut timefmt de la commande config.

Attributs:

var
La valeur est le nom de la variable ´┐Ż afficher.
decoding

Sp´┐Żcifie si Apache doit effectuer un d´┐Żcodage dans la variable avant son traitement ult´┐Żrieur. La valeur par d´┐Żfaut est none, et dans ce cas, aucun d´┐Żcodage n'est effectu´┐Ż. Si la valeur est url, un d´┐Żcodage de type URL sera effectu´┐Ż (il s'agit du codage de type %-encoding utilis´┐Ż dans les URLs des liens, etc...). Si la valeur est urlencoded, c'est un d´┐Żcodage des ´┐Żl´┐Żments de type application/x-www-form-urlencode (que l'on trouve dans les cha´┐Żnes de param´┐Żtres) qui sera effectu´┐Ż. Si la valeur est base64, un decodage de type base64 sera effectu´┐Ż, et si elle est entity, c'est un d´┐Żcodage des entit´┐Żs HTML qui sera effectu´┐Ż. Ce d´┐Żcodage est effectu´┐Ż avant tout codage ult´┐Żrieur de la variable. Il est possible d'effectuer plusieurs d´┐Żcodages en sp´┐Żcifiant plusieurs valeurs s´┐Żpar´┐Żes par des virgules. Les sp´┐Żcifications de d´┐Żcodages restent valables jusqu'au prochain attribut de d´┐Żcodage, ou la fin de l'´┐Żl´┐Żment.

Pour ´┐Żtre pris en compte, l'attribut de d´┐Żcodage doit pr´┐Żc´┐Żder l'attribut var correspondant.

encoding

Sp´┐Żcifie la mani´┐Żre dont Apache va coder les caract´┐Żres sp´┐Żciaux que la variable contient avant leur affichage. S'il est d´┐Żfini ´┐Ż none, aucun codage ne sera effectu´┐Ż. S'il est d´┐Żfini ´┐Ż url, un codage de type URL sera effectu´┐Ż (aussi connu sous le nom de codage avec caract´┐Żres % , il convient pour les URLS des liens, etc...). S'il est d´┐Żfini ´┐Ż urlencoded, c'est un codage compatible application/x-www-form-urlencoded qui sera effectu´┐Ż (´┐Ż utiliser dans les cha´┐Żnes de param´┐Żtres). S'il est d´┐Żfini ´┐Ż base64, c'est un encodage de type base64 qui sera effectu´┐Ż. Au d´┐Żbut d'un ´┐Żl´┐Żment echo, la valeur par d´┐Żfaut est d´┐Żfinie ´┐Ż entity, ce qui correspond ´┐Ż un codage de type entit´┐Ż (codage qui convient pour un ´┐Żl´┐Żment HTML de type bloc, comme le paragraphe d'un texte). Cette valeur par d´┐Żfaut peut ´┐Żtre modifi´┐Że en ajoutant un attribut encoding, qui fera effet jusqu'´┐Ż la d´┐Żfinition d'un nouvel attribut encoding ou la fin de l'´┐Żl´┐Żment echo.

Pour produire son effet, l'attribut encoding doit pr´┐Żc´┐Żder l'attribut var concern´┐Ż.

Afin de pr´┐Żvenir les attaques de type cross-site scripting, il est recommand´┐Ż de toujours encoder les donn´┐Żes fournies par les utilisateurs.

Example

<!--#echo encoding="entity" var="QUERY_STRING" -->

L'´┐Żl´┐Żment exec

La commande exec ex´┐Żcute la commande shell ou le script sp´┐Żcifi´┐Ż. Elle n´┐Żcessite le chargement du module mod_cgi. Si Options IncludesNOEXEC est d´┐Żfinie, cette commande est d´┐Żsactiv´┐Że. Les attributs disponibles sont :

cgi

La valeur sp´┐Żcifie un chemin URL vers le script CGI (encod´┐Ż avec caract´┐Żres %). Si le chemin ne commence pas par un slash (/), il est consid´┐Żr´┐Ż comme relatif au document courant. Le document r´┐Żf´┐Żrenc´┐Ż par ce chemin est invoqu´┐Ż en tant que script CGI, m´┐Żme s'il n'est pas cens´┐Ż ´┐Żtre reconnu comme tel par le serveur. Les scripts CGI doivent cependant ´┐Żtre activ´┐Żs dans le r´┐Żpertoire qui contient les scripts (via la directive ScriptAlias ou l'Options ExecCGI).

Le PATH_INFO et la cha´┐Żne d'arguments (QUERY_STRING) de la requ´┐Żte originale du client sont fournis au script CGI ; ils ne peuvent pas ´┐Żtre sp´┐Żcifi´┐Żs dans le chemin de l'URL. Le script disposera des variables include en plus de l'environnement standard CGI.

Exemple

<!--#exec cgi="/cgi-bin/exemple.cgi" -->

Si, ´┐Ż la place d'un flux de sortie, le script renvoie un en-t´┐Żte Location:, ce dernier sera traduit en ancrage HTML.

L'´┐Żl´┐Żment include virtual doit ´┐Żtre pr´┐Żf´┐Żr´┐Ż ´┐Ż exec cgi. En particulier, si vous devez transmettre des arguments suppl´┐Żmentaires ´┐Ż un programme CGI en utilisant la cha´┐Żne d'arguments de la requ´┐Żte, c'est impossible avec exec cgi, mais vous pouvez y parvenir avec include virtual comme suit :

<!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" -->

cmd

Le serveur va ex´┐Żcuter la commande fournie en utilisant /bin/sh. La commande dispose des variables include, en plus du jeu habituel de variables CGI.

Il est toujours pr´┐Żf´┐Żrable d'utiliser #include virtual ´┐Ż la place de #exec cgi ou #exec cmd. #include virtual utilise le m´┐Żcanisme standard des sous-requ´┐Żtes d'Apache pour inclure des fichiers ou des scripts. Il a fait l'objet de tests plus approfondis et sa maintenance est mieux suivie.

De plus, sur certaines plate-formes, comme Win32, et sous unix, si l'on utilise suexec, il est impossible de transmettre des arguments ´┐Ż une commande dans une directive exec, ´┐Ż moins d'ins´┐Żrer des espaces dans la commande. Ainsi, alors que ce qui suit fonctionnera sous unix avec une configuration sans suexec, l'effet produit ne sera pas celui d´┐Żsir´┐Ż sous Win32, ou dans le cas de l'utilisation de suexec :

<!--#exec cmd="perl /chemin/vers/script_perl arg1 arg2" -->

L'´┐Żl´┐Żment fsize

Cette commande permet d'afficher la taille du fichier sp´┐Żcifi´┐Ż en fonction des sp´┐Żcifications de format de sizefmt. Attributs :

file
La valeur est le chemin du fichier, relatif au r´┐Żpertoire contenant le document en cours d'interpr´┐Żtation.

Ce fichier a une taille de <!--#fsize file="mod_include.html" --> octets.

La valeur de file ne peut pas faire r´┐Żf´┐Żrence ´┐Ż un fichier situ´┐Ż ´┐Ż un niveau sup´┐Żrieur de l'arborescence du r´┐Żpertoire courant ou en dehors de la racine des documents ; il ne peut donc ni commencer par un slash, ni contenir la s´┐Żquence de caract´┐Żres ../. Si c'est le cas, le message d'erreur The given path was above the root path sera renvoy´┐Ż.
virtual
La valeur est un chemin URL (cod´┐Ż avec caract´┐Żres %). S'il ne commence pas par un slash (/), il est consid´┐Żr´┐Ż comme relatif au document courant. Notez que cette commande n'affiche pas la taille de la sortie d'un programme CGI, mais la taille du programme CGI lui-m´┐Żme.

Ce fichier a une taille de <!--#fsize virtual="/docs/mod/mod_include.html" --> octets.

Notez que dans la plupart des cas, ces deux attributs sont identiques. Cependant, l'attribut file ne respecte pas les aliases URL-space.

L'´┐Żl´┐Żment flastmod

Cette commande permet d'afficher la date de derni´┐Żre modification du fichier sp´┐Żcifi´┐Ż, en fonction des sp´┐Żcifications de format de timefmt. Les attributs sont les m´┐Żmes que ceux de la commande fsize.

L'´┐Żl´┐Żment include

Cette commande permet d'ins´┐Żrer le texte d'un autre document ou fichier dans le fichier en cours d'interpr´┐Żtation. Tout fichier inclus est soumis au contr´┐Żle d'acc´┐Żs habituel. Si Options IncludesNOEXEC est d´┐Żfini pour le r´┐Żpertoire contenant le fichier interpr´┐Żt´┐Ż, seuls les documents poss´┐Żdant un type MIME de type texte (text/plain, text/html, etc...) seront inclus. Les scripts CGI, quant ´┐Ż eux, sont invoqu´┐Żs de mani´┐Żre habituelle en utilisant l'URL compl´┐Żte fournie avec la commande, y compris toute cha´┐Żne d'arguments ´┐Żventuelle.

Un attribut d´┐Żfinit le chemin du document ´┐Ż inclure, et peut appara´┐Żtre plusieurs fois dans l'´┐Żl´┐Żment ´┐Ż inclure ; en retour, pour chaque attribut fourni ´┐Ż la commande include, une inclusion est effectu´┐Że. Les attributs disponibles sont :

file
La valeur est un chemin relatif au r´┐Żpertoire contenant le fichier en cours d'interpr´┐Żtation. Elle ne peut ni contenir ../, ni ´┐Żtre un chemin absolu. Ainsi, vous ne pouvez pas inclure de fichiers situ´┐Żs en dehors de l'arborescence du site web ou dans un niveau sup´┐Żrieur ´┐Ż celui du fichier courant dans cette arborescence. Il est toujours pr´┐Żf´┐Żrable d'utiliser l'attribut virtual.
virtual

La valeur est un chemin URL (cod´┐Ż avec caract´┐Żres %). L'URL ne peut contenir qu'un chemin et une cha´┐Żne d'arguments ´┐Żventuelle, ´┐Ż l'exclusion de tout protocole ou nom d'h´┐Żte. S'il ne commence pas par un slash (/), il est consid´┐Żr´┐Ż comme relatif au document courant.

Une URL est construite ´┐Ż partir de l'attribut, et la sortie que renverrait le serveur si l'URL ´┐Żtait acc´┐Żd´┐Że par le client est incluse dans la sortie interpr´┐Żt´┐Że. Les inclusions de fichiers peuvent ainsi ´┐Żtre imbriqu´┐Żes.

Si l'URL sp´┐Żcifi´┐Że correspond ´┐Ż un programme CGI, le programme sera ex´┐Żcut´┐Ż, et son flux de sortie ins´┐Żr´┐Ż ´┐Ż la place de la directive dans le fichier interpr´┐Żt´┐Ż. Vous pouvez ins´┐Żrer une cha´┐Żne d'arguments dans une URL correspond ´┐Ż un programme CGI :

<!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" -->

include virtual doit ´┐Żtre pr´┐Żf´┐Żr´┐Ż ´┐Ż exec cgi pour inclure le flux de sortie d'un programme CGI dans un document HTML.

Si la directive KeptBodySize est correctement d´┐Żfinie et valide pour le fichier inclus, les tentatives de requ´┐Żtes POST vers le document HTML qui inclut des fichiers seront transmises aux sous-requ´┐Żtes en tant que requ´┐Żtes POST elles-m´┐Żmes. Sans cette directive, toutes les sous-requ´┐Żtes sont trait´┐Żes en tant que requ´┐Żtes GET.

onerror

La valeur est un chemin-URL (cod´┐Ż-%) qui est affich´┐Ż si une tentative pr´┐Żc´┐Żdente d'inclure un fichier ou un attribut virtuel a ´┐Żchou´┐Ż. Pour produire son effet, cet attribut doit ´┐Żtre sp´┐Żcifi´┐Ż apr´┐Żs le fichier ou les attributs virtuels concern´┐Żs. Si la tentative d'inclure le chemin onerror ´┐Żchoue, ou si onerror n'est pas sp´┐Żcifi´┐Ż, c'est le message d'erreur par d´┐Żfaut qui sera inclus.

# Exemple simple
<!--#include virtual="/not-exist.html" onerror="/error.html" -->

# Chemins onerror d´┐Żdi´┐Żs
<!--#include virtual="/path-a.html" onerror="/error-a.html" virtual="/path-b.html" onerror="/error-b.html" -->

L'´┐Żl´┐Żment printenv

Cette commande affiche la liste en mode texte de toutes les variables et de leurs valeurs. Les caract´┐Żres sp´┐Żciaux sont encod´┐Żs entity avant d'´┐Żtre affich´┐Żs (se reporter ´┐Ż l'´┐Żl´┐Żment echo pour plus de d´┐Żtails). Cette commande ne comporte pas d'attributs.

Exemple

<pre> <!--#printenv --> </pre>

L'´┐Żl´┐Żment set

Cette commande permet de d´┐Żfinir la valeur d'une variable. Les attributs sont :

var
Le nom de la variable ´┐Ż d´┐Żfinir.
value
La valeur ´┐Ż affecter ´┐Ż la variable.
decoding

Sp´┐Żcifie si Apache doit effectuer un d´┐Żcodage dans la variable avant son traitement ult´┐Żrieur. La valeur par d´┐Żfaut est none, et dans ce cas, aucun d´┐Żcodage n'est effectu´┐Ż. Si la valeur est url, urlencoded, base64 ou entity, c'est un d´┐Żcodage de type URL, application/x-www-form-urlencoded, base64 ou entit´┐Ż HTML qui sera respectivement effectu´┐Ż. Il est possible d'effectuer plusieurs d´┐Żcodages en sp´┐Żcifiant plusieurs valeurs s´┐Żpar´┐Żes par des virgules. Les sp´┐Żcifications de d´┐Żcodages restent valables jusqu'au prochain attribut de d´┐Żcodage, ou la fin de l'´┐Żl´┐Żment. Pour ´┐Żtre pris en compte, l'attribut de d´┐Żcodage doit pr´┐Żc´┐Żder l'attribut var correspondant.

encoding

Sp´┐Żcifie la mani´┐Żre dont Apache va encoder les caract´┐Żres sp´┐Żciaux que la variable contient avant leur affichage. S'il est d´┐Żfini ´┐Ż none, aucun encodage ne sera effectu´┐Ż. Si la valeur est url, urlencoding, base64 ou entity, c'est un encodage de type URL, application/x-www-form-urlencoded, base64 ou entit´┐Ż HTML qui sera respectivement effectu´┐Ż. Il est possible de sp´┐Żcifier plusieurs types d'encodage en les s´┐Żparant par des virgules. La sp´┐Żcification du type d'encodage fera effet jusqu'´┐Ż la d´┐Żfinition d'un nouvel attribut encoding ou la fin de l'´┐Żl´┐Żment. Pour produire son effet, l'attribut encoding doit pr´┐Żc´┐Żder l'attribut var concern´┐Ż. Les encodages sont effectu´┐Żs apr´┐Żs les op´┐Żrations de d´┐Żcodage.

Exemple

<!--#set var="category" value="help" -->

top

Variables include

´┐Ż l'instar des variables de l'environnement CGI standard, ces variables sont mises ´┐Ż la disposition de la commande echo, des op´┐Żrateurs conditionnels if et elif, et de tout programme invoqu´┐Ż par le document.

DATE_GMT
La date GMT (Greenwich Mean Time) courante.
DATE_LOCAL
La date locale courante.
DOCUMENT_NAME
Le nom de base du fichier demand´┐Ż par l'utilisateur (sans son chemin).
DOCUMENT_URI
Le chemin URL (caract´┐Żres % d´┐Żcod´┐Żs) du document demand´┐Ż par l'utilisateur. Notez que dans le cas d'inclusions de fichiers imbriqu´┐Żes, il ne s'agit pas de l'URL du document courant. Notez ´┐Żgalement que si l'URL est modifi´┐Że en interne (par exemple via une directive alias ou directoryindex), c'est l'URL modifi´┐Że que contiendra la variable.
LAST_MODIFIED
La date de derni´┐Żre modification du document demand´┐Ż par l'utilisateur.
QUERY_STRING_UNESCAPED
Si une cha´┐Żne d'arguments est pr´┐Żsente, elle sera affect´┐Że ´┐Ż cette variable, les caract´┐Żres % d´┐Żcod´┐Żs, et ´┐Żventuellement ´┐Żchapp´┐Żs pour qu'ils ne soient pas interpr´┐Żt´┐Żs par le shell (les caract´┐Żres sp´┐Żciaux comme &,etc... sont pr´┐Żc´┐Żd´┐Żs d'anti-slashes).
top

Substitution de variable

Une substitution de variable ´┐Ż l'int´┐Żrieur d'une cha´┐Żne entre guillemets s'effectue dans la plupart des situations o´┐Ż cette derni´┐Żre peut raisonablement constituer un argument d'une directive SSI. Sont concern´┐Żes les directives config, exec, flastmod, fsize, include, echo, et set. Si la directive SSILegacyExprParser est d´┐Żfinie ´┐Ż on, la substitution s'effectue aussi dans les arguments des op´┐Żrateurs conditionnels. Vous pouvez ins´┐Żrer un signe dollar en tant que caract´┐Żre litt´┐Żral dans une cha´┐Żne en utilisant un anti-slash :

<!--#set var="cur" value="\$test" -->

Si une r´┐Żf´┐Żrence de variable doit ´┐Żtre substitu´┐Że au beau milieu d'une s´┐Żquence de caract´┐Żres qui pourrait ´┐Żtre elle-m´┐Żme consid´┐Żr´┐Że comme un identifiant valide, l'ambigu´┐Żt´┐Ż peut ´┐Żtre lev´┐Że en entourant la r´┐Żf´┐Żrence d'accolades, ´┐Ż la mani´┐Żre du shell :

<!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->

Dans cet exemple, la variable Zed se verra affecter la valeur "X_Y" si REMOTE_HOST et REQUEST_METHOD contiennent respectivement "X" et "Y".

top

El´┐Żments de contr´┐Żle d'inclusion conditionnelle

Les ´┐Żl´┐Żments de base du contr´┐Żle d'inclusion conditionnelle sont :

<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

L'´┐Żl´┐Żment if fonctionne de la m´┐Żme mani´┐Żre que la directive if d'un langage de programmation. La condition est ´┐Żvalu´┐Że et si le r´┐Żsultat est vrai, le texte qui suit jusqu'au prochain ´┐Żl´┐Żment elif, else ou endif sera inclus dans le flux de sortie.

Les ´┐Żl´┐Żments elif ou else permettent d'ins´┐Żrer du texte dans le flux de sortie si test_condition s'est r´┐Żv´┐Żl´┐Ż faux. Ces ´┐Żl´┐Żments sont optionnels.

L'´┐Żl´┐Żment endif termine le bloc de traitement conditionnel if et est obligatoire.

test_condition est une expression bool´┐Żenne qui emprunte la syntaxe ap_expr. La directive SSILegacyExprParser permet de modifier cette syntaxe pour la rendre compatible avec Apache HTTPD 2.2.x.

Le jeu de variables SSI avec l'´┐Żl´┐Żment var sont export´┐Żes vers l'environnement de la requ´┐Żte et sont accessibles via la fonction reqenv. Pour faire simple, le nom de fonction v est aussi disponible dans le module mod_include.

Dans l'exemple suivant, "depuis le r´┐Żseau local" sera affich´┐Ż si l'adresse IP du client appartient au sous-r´┐Żseau 10.0.0.0/8.

<!--#if expr='-R "10.0.0.0/8"' -->
depuis le r´┐Żseau local
<!--#else -->
depuis ailleurs
<!--#endif -->

Dans l'exemple suivant, "foo vaut bar" sera affich´┐Ż si la variable foo contient la valeur "bar".

<!--#if expr='v("foo") = "bar"' -->
foo vaut bar
<!--#endif -->

Documentation de r´┐Żf´┐Żrence

Voir aussi Les expressions dans le serveur HTTP Apache pour une r´┐Żf´┐Żrence compl´┐Żte et des exemples. Les fonctions restricted ne sont pas disponibles dans mod_include.

top

Syntaxe des expressions h´┐Żrit´┐Że

Cette section d´┐Żcrit la syntaxe de l'´┐Żl´┐Żment #if expr dans le cas o´┐Ż la directive SSILegacyExprParser est d´┐Żfinie ´┐Ż on.

cha´┐Żne
vrai si cha´┐Żne n'est pas vide
-A string

vrai si l'URL que contient la cha´┐Żne est accessible du point de vue de la configuration, faux sinon. Il s'av´┐Żre utile lorsqu'un lien vers une URL doit ´┐Żtre cach´┐Ż aux utilisateurs qui ne sont pas autoris´┐Żs ´┐Ż voir cette URL. Notez que le test porte sur l'autorisation d'acc´┐Żs ´┐Ż l'URL, et non sur son existence.

Exemple

<!--#if expr="-A /prive" -->
Cliquez <a href="/prive">ici</a> pour acc´┐Żder aux informations priv´┐Żes.
<!--#endif -->

cha´┐Żne1 = cha´┐Żne2
cha´┐Żne1 == cha´┐Żne2
cha´┐Żne1 != cha´┐Żne2

Compare cha´┐Żne1 ´┐Ż cha´┐Żne2. Si cha´┐Żne2 est de la forme /cha´┐Żne2/, elle est trait´┐Że comme une expression rationnelle. Les expressions rationnelles sont impl´┐Żment´┐Żes par le moteur PCRE et poss´┐Żdent la m´┐Żme syntaxe que celles de perl 5. Notez que == n'est qu'un alias pour = et se comporte exactement de la m´┐Żme mani´┐Żre que ce dernier.

Si vous faites une comparaison directe (= ou ==), vous pouvez extraire des parties de l'expression rationnelle. Les parties extraites sont stock´┐Żes dans les variables sp´┐Żciales $1 .. $9. L'ensemble de la cha´┐Żne correspondant ´┐Ż l'expression rationnelle est stock´┐Ż dans la variable sp´┐Żciale $0.

Exemple

<!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" -->
<!--#set var="session" value="$1" -->
<!--#endif -->

cha´┐Żne1 < cha´┐Żne2
cha´┐Żne1 <= cha´┐Żne2
cha´┐Żne1 > cha´┐Żne2
cha´┐Żne1 >= cha´┐Żne2
Compare cha´┐Żne1 ´┐Ż cha´┐Żne2. Notez que les cha´┐Żnes sont compar´┐Żes de mani´┐Żre litt´┐Żrale (en utilisant strcmp(3)). Ainsi, la cha´┐Żne "100" est inf´┐Żrieure ´┐Ż "20".
( test_condition )
vrai si test_condition est vrai
! test_condition
vrai si test_condition est faux
test_condition1 && test_condition2
vrai si test_condition1 et test_condition2 sont tous les deux vrais
test_condition1 || test_condition2
vrai si au moins un des tests test_condition1 ou test_condition2 est vrai

"=" et "!=" ont une priorit´┐Ż sup´┐Żrieure ´┐Ż "&&" et "||". "!" a la priorit´┐Ż la plus haute. Ainsi, les deux directives suivantes sont ´┐Żquivalentes :

<!--#if expr="$a = test1 && $b = test2" -->
<!--#if expr="($a = test1) && ($b = test2)" -->

Les op´┐Żrateurs bool´┐Żens && et || ont la m´┐Żme priorit´┐Ż. Ainsi, si vous voulez augmenter la priorit´┐Ż d'un de ces op´┐Żrateurs, vous devez utiliser des parenth´┐Żses.

Tout ce qui n'est pas reconnu comme variable ou op´┐Żrateur est trait´┐Ż comme une cha´┐Żne. Les cha´┐Żnes peuvent aussi ´┐Żtre entour´┐Żes d'apostrophes : 'cha´┐Żne'. Les cha´┐Żnes sans apostrophe ne peuvent pas contenir d'espaces (espaces ou tabulations) car ceux-ci servent ´┐Ż s´┐Żparer certains ´┐Żl´┐Żments comme les variables. Si plusieurs cha´┐Żnes se trouvent dans une ligne, elles sont concat´┐Żn´┐Żes en utilisant des espaces. Ainsi,

cha´┐Żne1    cha´┐Żne2 devient cha´┐Żne1 cha´┐Żne2

et

'cha´┐Żne1    cha´┐Żne2' devient cha´┐Żne1    cha´┐Żne2.

Optimisation des expressions bool´┐Żennes

Si les expressions atteignent une complexit´┐Ż suffisante pour ralentir les traitements de mani´┐Żre significative, vous pouvez essayer de les optimiser en fonction des r´┐Żgles d'´┐Żvaluation :

  • Les expressions sont ´┐Żvalu´┐Żes de la gauche vers la droite
  • Les op´┐Żrateurs bool´┐Żens binaires (&& et ||) font l'objet d'une ´┐Żvaluation abr´┐Żg´┐Że chaque fois que cela est possible. En d'autres termes, et selon la r´┐Żgle ci-dessus, mod_include ´┐Żvalue tout d'abord la partie gauche de l'expression. Si le r´┐Żsultat de l'´┐Żvaluation de cette partie gauche suffit ´┐Ż d´┐Żterminer le r´┐Żsultat final, l'´┐Żvaluation s'arr´┐Żte ici. Dans le cas contraire, la partie droite est ´┐Żvalu´┐Że, et le r´┐Żsultat final tient compte des r´┐Żsultats des ´┐Żvaluations des parties gauche et droite.
  • L'´┐Żvaluation abr´┐Żg´┐Że est d´┐Żsactiv´┐Że tant qu'il reste des expressions r´┐Żguli´┐Żres ´┐Ż traiter. Ces derni´┐Żres doivent ´┐Żtre ´┐Żvalu´┐Żes afin de d´┐Żfinir les variables correspondant aux r´┐Żf´┐Żrences arri´┐Żres ($1 .. $9).

Si vous voulez d´┐Żterminer la mani´┐Żre dont une expression est trait´┐Że, vous pouvez recompiler mod_include en utilisant l'option de compilation -DDEBUG_INCLUDE. Ceci a pour effet d'ins´┐Żrer, pour chaque expression interpr´┐Żt´┐Że, des informations ´┐Żtiquet´┐Żes, l'arbre d'interpr´┐Żtation et la mani´┐Żre dont elle est ´┐Żvalu´┐Że au sein du flux de sortie envoy´┐Ż au client.

Slashes d'´┐Żchappement dans les expressions rationnelles

Tous les caract´┐Żres slashes qui ne sont pas des s´┐Żparateurs dans votre expression rationnelle doivent ´┐Żtre ´┐Żchapp´┐Żs, et ceci sans tenir compte de leur signification du point de vue du moteur d'expressions rationnelles.

Documentation de r´┐Żf´┐Żrence

Voir le document Les expressions dans le serveur HTTP Apache, pour une r´┐Żf´┐Żrence compl´┐Żte et des exemples.

top

SSIEndTag Directive

Description:Cha´┐Żne qui termine l'´┐Żl´┐Żment include
Syntaxe:SSIEndTag tag
D´┐Żfaut:SSIEndTag "-->"
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_include

Cette directive permet de modifier la cha´┐Żne que mod_include interpr´┐Żte comme la fin d'un ´┐Żl´┐Żment include.

SSIEndTag "%>"

Voir aussi

top

SSIErrorMsg Directive

Description:Message d'erreur affich´┐Ż lorsqu'une erreur SSI survient
Syntaxe:SSIErrorMsg message
D´┐Żfaut:SSIErrorMsg "[an error occurred while processing this directive]"
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
AllowOverride:All
Statut:Base
Module:mod_include

La directive SSIErrorMsg permet de modifier le message d'erreur affich´┐Ż lorsqu'une erreur SSI survient. Pour les serveurs en production, il est recommand´┐Ż de modifier le message d'erreur par d´┐Żfaut en "<!-- Error -->", de fa´┐Żon ´┐Ż ce que le message ne soit pas pr´┐Żsent´┐Ż ´┐Ż l'utilisateur.

Cette directive a le m´┐Żme effet que l'´┐Żl´┐Żment <!--#config errmsg=message -->.

SSIErrorMsg "<!-- Error -->"
top

SSIETag Directive

Description:D´┐Żfinit si des en-t´┐Żtes ETags sont g´┐Żn´┐Żr´┐Żs par le serveur.
Syntaxe:SSIETag on|off
D´┐Żfaut:SSIETag off
Contexte:r´┐Żpertoire, .htaccess
Statut:Base
Module:mod_include
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.2.15 du serveur HTTP Apache.

Dans le cas g´┐Żn´┐Żral, un fichier filtr´┐Ż par mod_include peut contenir des ´┐Żl´┐Żments soit g´┐Żn´┐Żr´┐Żs dynamiquement, soit ´┐Żventuellement modifi´┐Żs ind´┐Żpendemment du fichier original. En cons´┐Żquence, il est demand´┐Ż par d´┐Żfaut au serveur de ne pas g´┐Żn´┐Żrer d'en-t´┐Żte ETag ´┐Ż la r´┐Żponse en ajoutant no-etag aux informations de requ´┐Żte.

Ce comportement peut ´┐Żtre modifi´┐Ż via la directive SSIETag qui permet au serveur de g´┐Żn´┐Żrer un en-t´┐Żte ETag. On peut aussi l'utiliser pour la mise en cache de la sortie. Notez qu'un serveur d'arri´┐Żre-plan ou un g´┐Żn´┐Żrateur de contenu dynamique peut lui-m´┐Żme g´┐Żn´┐Żrer un en-t´┐Żte ETag, en ignorant l'information no-etag, cet en-t´┐Żte ETag ´┐Żtant transmis par mod_include sans tenir compte de la d´┐Żfinition de la pr´┐Żsente directive. La directive SSIETag peut prendre une des valeurs suivantes :

off
no-etag sera ajout´┐Ż aux informations de requ´┐Żte, et il sera demand´┐Ż au serveur de ne pas g´┐Żn´┐Żrer d'en-t´┐Żte ETag. Lorsqu'un serveur ignore la valeur de no-etag et g´┐Żn´┐Żre tout de m´┐Żme un en-t´┐Żte ETag, ce dernier sera respect´┐Ż.
on
Les en-t´┐Żtes ETag existants seront respect´┐Żs, et ceux g´┐Żn´┐Żr´┐Żs par le serveur seront ajout´┐Żs ´┐Ż la r´┐Żponse.
top

SSILastModified Directive

Description:D´┐Żfinit si des en-t´┐Żtes Last-Modified sont g´┐Żn´┐Żr´┐Żs par le serveur.
Syntaxe:SSILastModified on|off
D´┐Żfaut:SSILastModified off
Contexte:r´┐Żpertoire, .htaccess
Statut:Base
Module:mod_include
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.2.15 du serveur HTTP Apache.

Dans le cas g´┐Żn´┐Żral, un fichier filtr´┐Ż par mod_include peut contenir des ´┐Żl´┐Żments soit g´┐Żn´┐Żr´┐Żs dynamiquement, soit ´┐Żventuellement modifi´┐Żs ind´┐Żpendemment du fichier original. En cons´┐Żquence, l'en-t´┐Żte Last-Modified est supprim´┐Ż par d´┐Żfaut de la r´┐Żponse.

La directive SSILastModified permet de modifier ce comportement en faisant en sorte que l'en-t´┐Żte Last-Modified soit respect´┐Ż s'il est d´┐Żj´┐Ż pr´┐Żsent, ou d´┐Żfini dans le cas contraire. On peut aussi l'utiliser pour la mise en cache de la sortie. La directive SSILastModified peut prendre une des valeurs suivantes :

off
L'en-t´┐Żte Last-Modified sera supprim´┐Ż des r´┐Żponses, ´┐Ż moins que la directive XBitHack ne soit d´┐Żfinie ´┐Ż full comme d´┐Żcrit plus loin.
on
L'en-t´┐Żte Last-Modified sera respect´┐Ż s'il est d´┐Żj´┐Ż pr´┐Żsent, et ajout´┐Ż ´┐Ż la r´┐Żponse si cette derni´┐Żre est un fichier et si l'en-t´┐Żte est manquant. La directive SSILastModified l'emporte sur la directive XBitHack.
top

SSILegacyExprParser Directive

Description:Active le mode de compatibilit´┐Ż pour les expressions conditionnelles.
Syntaxe:SSILegacyExprParser on|off
D´┐Żfaut:SSILegacyExprParser off
Contexte:r´┐Żpertoire, .htaccess
Statut:Base
Module:mod_include
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.3.13.

Depuis la version 2.3.13, mod_include a adopt´┐Ż la nouvelle syntaxe ap_expr pour ses expressions conditionnelles dans les ´┐Żl´┐Żments de contr´┐Żle de flux #if. Cette directive permet de r´┐Żactiver l'ancienne syntaxe qui est compatible avec les versions 2.2.x et ant´┐Żrieures d'Apache HTTPD.

top

SSIStartTag Directive

Description:Cha´┐Żne qui marque le d´┐Żbut d'un ´┐Żl´┐Żment include
Syntaxe:SSIStartTag tag
D´┐Żfaut:SSIStartTag "<!--#"
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_include

Cette directive permet de modifier la cha´┐Żne que mod_include interpr´┐Żte comme le d´┐Żbut d'un ´┐Żl´┐Żment include.

Cette option peut vous ´┐Żtre utile si vous avez deux serveurs qui interpr´┐Żtent un fichier avec des commandes diff´┐Żrentes (et ´┐Żventuellement ´┐Ż des moments diff´┐Żrents).

      SSIStartTag "<%"
SSIEndTag "%>"

Avec l'exemple ci-dessus, qui d´┐Żfinit aussi une directive SSIEndTag, vous pourrez inscrire des directives SSI comme dans l'exemple suivant :

Directives SSI avec marques de d´┐Żbut et de fin personnalis´┐Żes

<%printenv %>

Voir aussi

top

SSITimeFormat Directive

Description:Configuration du format d'affichage des dates
Syntaxe:SSITimeFormat cha´┐Żne de formatage
D´┐Żfaut:SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
AllowOverride:All
Statut:Base
Module:mod_include

Cette directive permet de modifier le format d'affichage des variables d'environnement DATE. La cha´┐Żne de formatage est identique ´┐Ż celle de la fonction strftime(3) de la biblioth´┐Żque C standard.

Cette directive a le m´┐Żme effet que l'´┐Żl´┐Żment <!--#config timefmt=cha´┐Żne de formatage -->.

SSITimeFormat "%R, %B %d, %Y"

Avec l'exemple ci-dessus, les dates seront affich´┐Żes dans le style "22:26, June 14, 2002".

top

SSIUndefinedEcho Directive

Description:Cha´┐Żne ´┐Ż afficher lorsqu'on tente d'extraire le contenu d'une variable non d´┐Żfinie
Syntaxe:SSIUndefinedEcho cha´┐Żne
D´┐Żfaut:SSIUndefinedEcho "(none)"
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
AllowOverride:All
Statut:Base
Module:mod_include

Cette directive permet de modifier la cha´┐Żne affich´┐Że par mod_include lorsqu'on tente d'extraire le contenu d'une variable non d´┐Żfinie.

SSIUndefinedEcho "<!-- nondef -->"
top

XBitHack Directive

Description:Interpr´┐Żte les directives SSI dans les fichiers dont le bit d'ex´┐Żcution est positionn´┐Ż
Syntaxe:XBitHack on|off|full
D´┐Żfaut:XBitHack off
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire, .htaccess
AllowOverride:Options
Statut:Base
Module:mod_include

La directive XBitHack permet de contr´┐Żler l'interpr´┐Żtation des documents html standards. Elle n'affecte que les fichiers dont le type MIME est text/html. XBitHack peut prendre les valeurs suivantes :

off
Aucun traitement particulier pour les fichiers ex´┐Żcutables.
on
Tout fichier text/html dont le bit d'ex´┐Żcution est positionn´┐Ż pour le propri´┐Żtaire sera trait´┐Ż en tant que document html interpr´┐Żt´┐Ż par le serveur.
full
Identique ´┐Ż on, avec test du bit d'ex´┐Żcution pour le groupe. Si ce dernier est positionn´┐Ż, la date de derni´┐Żre modification du fichier renvoy´┐Ż est d´┐Żfinie ´┐Ż la date de derni´┐Żre modification du fichier. Dans le cas contraire, aucune date de derni´┐Żre modification n'est renvoy´┐Że. Le positionnement de ce bit permet aux clients et aux mandataires de g´┐Żrer la mise en cache du r´┐Żsultat de la requ´┐Żte.

Note

Il est recommand´┐Ż de n'utiliser l'option full que dans le cas o´┐Ż vous ´┐Żtes certain que le bit d'ex´┐Żcution du groupe est non positionn´┐Ż pour les scripts SSI qui pourraient effectuer l'#include d'un programme CGI ou bien produire des sorties diff´┐Żrentes ´┐Ż chaque acc´┐Żs (ou seraient susceptibles d'´┐Żtre modifi´┐Żes au cours des requ´┐Żtes ult´┐Żrieures).

Lorsqu'elle est d´┐Żfinie ´┐Ż on, la directive SSILastModified l'emporte sur la directive XBitHack.

Langues Disponibles:  en  |  fr  |  ja 

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.