Server Side Includes ( SSI ) es un lenguaje de programación del lado del servidor interpretado y simple que se utiliza casi exclusivamente para la World Wide Web . Es muy útil para incluir el contenido de uno o más archivos en una página web en un servidor web (ver más abajo), utilizando su #include
directiva. Esto podría ser comúnmente un fragmento de código común en todo un sitio, como un encabezado de página, un pie de página y un menú de navegación. SSI también contiene directivas de control para funciones condicionales y directivas para llamar a programas externos. Es compatible con Apache , LiteSpeed , nginx , IIS y Jigsaw de W3C . [1] Tiene sus raíces en NCSA HTTPd . [2]
Para que un servidor web reconozca un archivo HTML habilitado para SSI y, por lo tanto, lleve a cabo estas instrucciones, el nombre del archivo debe terminar con una extensión especial , de manera predeterminada .shtml
, .stm
, .shtm
o, si el servidor está configurado para permitir esto, establecer el bit de ejecución del archivo. [3]
Como lenguaje de programación simple, SSI solo admite un tipo : texto. Su flujo de control es bastante simple, se admite la elección, pero los bucles no se admiten de forma nativa y solo se pueden realizar mediante recursión utilizando include o utilizando HTTP redirect . [a] El diseño simple del lenguaje hace que sea más fácil de aprender y usar que la mayoría de los lenguajes de script del lado del servidor, mientras que el procesamiento complicado del lado del servidor a menudo se realiza con uno de los lenguajes de programación con más funciones . SSI es Turing completo . [4]
SSI tiene una sintaxis simple: <!--#directive parameter=value parameter=value -->
. Las directivas se colocan en los comentarios HTML de modo que si SSI no está habilitado, los usuarios no verán las directivas SSI en la página, a menos que consulten su código fuente. Tenga en cuenta que la sintaxis no permite espacios entre el "<!--" inicial y la directiva. El tutorial de Apache sobre SSI estipula que el formato requiere un carácter de espacio antes del "-->" que cierra el elemento. [5]
Una página web que contenga una cita diaria podría incluir la cita colocando el siguiente código en el archivo de la página web:
<!--#include virtual="../quote.txt" -->
Con un solo cambio de quote.txt
archivo, todas las páginas que lo incluyan mostrarán la última cotización diaria. La inclusión no se limita a los archivos, sino que también puede incluir el texto de salida de un programa o el valor de una variable del sistema, como la hora actual.
Las siguientes son directivas SSI de la época de NCSA HTTPd (década de 1990). [2] Algunas implementaciones no las admiten todas. [6]
Posteriormente se agregaron directivas de control a SSI. Entre ellas se incluyen el control de flujo if-elif-else-endif y la escritura de variables, así como funciones más exóticas, como bucles, que solo se encuentran en algunas implementaciones.