Introducción a los 'Server Side Includes'

Cedido por guebmasterCOM.

Los SSI (Server Side Includes) son directivas insertadas en páginas HTML que nos permiten inserción de contenido generado dinámicamente en nuestras páginas web. Como PHP pero mucho más fácil.

Para que los SSI funcionen, las páginas HTML que las incluyen deben ser evaluadas por Apache antes de mostrar su contenido al navegador cliente. Por este motivo, servir páginas que hacen uso de SSI consume más recursos del sistema que el servir páginas HTML normales.

Configurar Apache para que permita SSI

Para permitir el uso de SSI en todo tu servidor o en un directorio concreto debes tener la directiva Options All o Options +Includes en el fichero de configuración de Apache, httpd.conf, o en un archivo htaccess. Debes tener algo así:

<Directory "c:/home">
   Options +Includes
   Order allow,deny
   Allow from all
   ...
   ...
</Directory>

Además, como queremos que Apache únicamente evalúe los archivos que tengan extensión shtml, esto también tendremos que indicarlo en httpd.conf o en el archivo htaccess que usemos. Para ello debes incluir las siguientes líneas:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Pero que ocurre cuando queremos usar SSI en una página web, pagina.html, que previamente no las usaba y que por lo tanto su extensión no es shtml? Tenemos dos opciones:

  1. Renombrar pagina.html por pagina.shtml y cambiar todos lo enlaces a pagina.html por pagina.shtml.
  2. Usar la directiva XBitHack de Apache. Esta directiva nos proporciona una forma de indicarle a Apache de uno en uno las páginas sin extensión shtml que queramos que evalúe. Para activar XBitHack incluye la siguiente línea en la configuración:
    XBitHack on

    Para indicar a Apache que evalúe una página concreta, simplemente tenemos que dar permisos de ejecución a este fichero:

    chmod +x pagina.html

Uso de SSI

echo permite imprimir ciertos datos como por ejemplo la fecha local, fecha GMT, fecha de la ultima modificación del fichero, variables definidas previamente, variables de entorno como DOCUMENT_URI, REMOTE_ADDR, SERVER_NAME, SERVER_PORT, etc.

La siguiente directiva imprime la fecha y hora GMT:

<!--#echo var="DATE_GMT"-->

La siguiente directiva muestra la fecha y hora local:

<!--#echo var="DATE_LOCAL"-->

La siguiente directiva muestra la fecha y hora de la última actualización del fichero:

<!--#echo var="LAST_MODIFIED" -->

La siguiente directiva muestra el valor de la variable NOMBRE, la cual como se puede observar ha sido definida previamente:

<!--#set var="NOMBRE" value="Juan García" -->
<!--#echo var="NOMBRE" -->

La siguiente directiva muestra el número IP del cliente:

<!--#echo var="REMOTE_ADDR" -->

include permite la inserción del contenido de otro fichero en el fichero actual. Resulta muy práctico para incluir una cabecera común en todos nuestros documentos:

<!--#include virtual="cabecera.html" -->

exec permite la ejecución de un programa externo desde el documento actual. Podemos ejecutar un programa ejecutable pasándole comandos de la siguiente forma:

<!--#exec cmd="mkdir -m 0755 /home/tudominio/directorio_nuevo" -->

Aunque también podemos ejecutar un script CGI:

<!--#exec cgi="script.cgi" -->

Debemos comentar que esta última directiva, exec, suele estar deshabilitada en la mayoría de los entornos de hosting virtual, por lo que si no funciona... posiblemente esta sea la causa.

config permite configurar la forma en la que se muestran ciertos tipos de datos.

La siguiente directiva configura el mensaje de error por defecto:

<!--#config errmsg="Ha ocurrido un error" -->

La siguiente directiva configura el formato en el que se muestras las fechas:

<!--#config timefmt="%A %B %d, %Y" -->
Hoy es <!--#echo var="DATE_LOCAL" -->

También están disponibles otras directivas más complejas de utilizar como email, ODBC, expresiones condicionales mediante if, etc. Pero, sinceramente, SSI no es el lenguaje más adecuado para hacer estas otras cosas, por lo que es mejor olvidarse de ellas y usar SSI para lo que realmente resulta práctico.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.