Les inclusions côté serveur ( SSI ) sont un langage de script côté serveur interprété et simple , utilisé presque exclusivement pour le Web . Il est particulièrement utile pour inclure le contenu d'un ou plusieurs fichiers dans une page Web sur un serveur Web (voir ci-dessous), grâce à sa #includedirective `include`. Il peut s'agir d'un élément de code commun à plusieurs pages d'un site, comme l'en-tête, le pied de page ou le menu de navigation. SSI contient également des directives de contrôle pour les fonctionnalités conditionnelles et des directives pour appeler des programmes externes. Il est pris en charge par Apache , LiteSpeed , nginx , IIS et Jigsaw du W3C . Il est issu de NCSA HTTPd .
Pour qu'un serveur Web puisse reconnaître un fichier HTML compatible SSI et exécuter ces instructions, soit le nom du fichier doit se terminer par une extension spéciale , par défaut .html .shtml, .stm.html, .shtm.html, soit, si le serveur est configuré pour l'autoriser, le bit d'exécution du fichier doit être activé.
Conception
En tant que langage de programmation simple, SSI ne prend en charge qu'un seul type : le texte. Son flux de contrôle est relativement simple, le choix est pris en charge, mais les boucles ne sont pas gérées nativement et ne peuvent être implémentées que par récursivité à l'aide de l'instruction `include` ou par redirection HTTP . La simplicité du langage le rend plus facile à apprendre et à utiliser que la plupart des langages de script côté serveur, tandis que le traitement côté serveur complexe est souvent réalisé avec des langages de programmation plus riches en fonctionnalités . SSI est Turing-complet .
SSI possède une syntaxe simple : les directives sont placées dans des commentaires HTML. Ainsi, si SSI n'est pas activé, les utilisateurs ne verront pas les directives SSI sur la page, sauf s'ils consultent son code source. Notez que la syntaxe n'autorise pas d'espaces entre le `<div>` et la directive. Le tutoriel Apache sur SSI précise que le format requiert un espace avant le `</div> ` qui ferme l'élément. <!--#directive parameter=value parameter=value--><!---->
Exemples
Une page web affichant un cours du jour peut l'intégrer en insérant le code suivant dans son fichier : Une simple modification de ce fichier suffira pour que toutes les pages l'incluant affichent le cours du jour. Cette intégration ne se limite pas aux fichiers ; elle peut également concerner le résultat d'un programme ou la valeur d'une variable système, comme l'heure actuelle.<!--#include virtual="../quote.txt"-->quote.txt
Directives
Commun
Voici les directives SSI de l'époque de NCSA HTTPd (années 1990). Certaines implémentations ne les prennent pas toutes en charge.
Directives de contrôle
Des directives de contrôle sont ajoutées ultérieurement à SSI. Elles comprennent le contrôle de flux omniprésent if-elif-else-endif et l'écriture de variables, ainsi que des fonctionnalités plus exotiques comme les boucles, présentes uniquement dans certaines implémentations.