Directivas SSI – Cómo Introducir Contenido Dinámico en HTM

Categorias: Webs Utiles

directivas ssi

Si tenemos un sitio Web en HTML y necesitamos incluir contenido dinámico, podemos hacerlo gracias a las directivas SSI.

SSI viene de Server Side Includes, que se traduciría algo así como Inlusión de Lado del Servidor.

Lo que se consigue con las directivas SSI es introducir contenido generado de forma dinámica en sitios web basados en HTML. Un ejemplo muy común sería el introducir la fecha y la hora en un HTML.

Añadiendo un pequeño código, podemos agregar el contenido dinámico en nuestro sitio web sin tener la necesidad de generar el sitio en PHP, ASP, etc..

√ ¿Necesitas un Certificado de Seguridad SSL? =>  CLICK AQUÍ

Cómo Usar SSI en Servidores Linux – Apache

En Hostinet, todos los alojamientos no Windows que ofrecemos, están basados en LAMP (Linux, Apache, MySQL y PHP).

Para poder trabajar con SSI en estos servidores necesitamos incluir una directiva en el archivo httpd.conf o en el archivo .htaccess.

Options +Includes

Este es el primer paso y es necesario para poder usar las directivas SSI, pero si el archivo incluye más configuraciones Options pueden crear incompatibilidades entre si. Esto podemos solucionarlo aplicando las Options al archivo específico donde queramos que se habiliten las directivas SSL.

También tenemos indicarle qué archivos o extensiones deben analizados para para que funcionen las directivas SSI.

Esto podemos hacerlo de dos formas distintas. Una implica un cambio de extensión del .html por .shtml y los enlaces que apunten a esta página.

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

La otra opción es usar la directiva XBitHack. De esta forma conseguimos no tener que cambiar el nombre de la página para poder añadir una directiva SSI en un documento .html.

Para ello tenemos que activar XBitHack:

XBitHack on

Y luego hace uso de chmod para incluir la página:

chmod +x pagename.html 

Apache no envía la última modificación de fecha o longitud del contenido HTTP en las páginas SSI. Esto puede hacer que la información no se guarde en la caché y hacer que todo parezca más lento.

Para solucionar esto podemos hace uso de la configuración XBitHack Full, con lo que Apache consultará la fecha original del archivo solicitado, ignorando la fecha de modificación.

También podemos hacer uso de la directiva mod expires para aplicar un tiempo de caducidad a los archivos.

Cómo Funcionan las Directivas SSI

Las directivas SSI sólo funcionan si el SSI está activado y funcionando correctamente, si no es así, el navegador ignorará la directiva SSI, y si está activado nos mostrará los resultados.

Mostrar la Fecha con SSI

Como hemos comentado antes, uno de los ejemplos más comunes en las directivas SSI es mostrar la fecha:

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

Podemos realizar algunos cambios en el formato con algunas variaciones:

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

Fecha de Modificación de Archivo

Si queremos añadir la fecha de modificación de un archivo, podemos hacer usando:

La última modificación de este documento ha sido <!--#flastmod file="index.html" --> 

También podemos usar algunas variaciones cómo:

<!--#config timefmt="%A %B %d, %Y" -->
Última modificación de este archivo <!--#flastmod file="ssi.shtml" --> 

Para encontrar más información acerca de timefmt, se puede buscar información sobre strftime ya que la sintaxis es la misma.

Añadir un Pie de Página

Si nuestro sitio web en HTML no sólo consta de una página, si no que son un conjunto de páginas HTML, una de las opciones más acertadas puede ser crear un pe de página donde mostrar la información SSI dado así un aspecto más estándar entre todas ellas, además de reducir la carga del servidor.

Las directivas SSI también pueden usarse para páginas HTML en otras páginas HTML.

Para conseguirlo sólo debemos crear un archivo de pie de página, por ejemplo footer.html, incluir las directivas SSI en el y luego usar el atributo virtual:

<!--#include virtual="/footer.html" --> 

Si el archivo no se encuentra en el mismo servidor deberemos incluir toda la URL.

Mostrar Mensaje de Error

Por defecto, si una directiva SSI no funciona correctamente podremos leer un mensaje parecido a:

[an error occurred while processing this directive]

Pero si queremos mostrar algo más humano podemos realizar cambios haciendo uso de errmsg:

<!--#config errmsg="[Parece que hay un error, lo arreglaremos los antes posible.]" --> 

Directivas SSI en Hosting Windows

La directivas SSI también pueden usarse en alojamientos Windows.

Con el atributo ssiExecDisable podemos determinar si queremos habilitar o deshabilitar las directivas SSI.

Hay que tener en cuenta que habilitado es false y deshabilitado es true, así que si quisiéramos deshabilitar el comando #exec para archivos SSI en, por ejemplo, Default Web Site, podemos tomar como referencia estos códigos:

<location path="Default Web Site">
   <system.webServer>
      <serverSideInclude ssiExecDisable="true" />
   </system.webServer>
</location>

Por defecto, el valor es false, es decir, habilitado.

Para deshabilitarlo con la linea de comandos AppCmd.exe:

appcmd.exe set config "Default Web Site" -section:system.webServer/serverSideInclude /ssiExecDisable:"True" /commit:apphost

Si necesitamos deshabilitar las directivas SSI en C#:

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection serverSideIncludeSection = config.GetSection("system.webServer/serverSideInclude", "Default Web Site");
         serverSideIncludeSection["ssiExecDisable"] = true;

         serverManager.CommitChanges();
      }
   }
}

En VB.NET:

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverSideIncludeSection As ConfigurationSection = config.GetSection("system.webServer/serverSideInclude", "Default Web Site")
      serverSideIncludeSection("ssiExecDisable") = True

      serverManager.CommitChanges()
   End Sub
End Module

En JavScript:

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var serverSideIncludeSection = adminManager.GetAdminSection("system.webServer/serverSideInclude", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverSideIncludeSection.Properties.Item("ssiExecDisable").Value = true;

adminManager.CommitChanges();

Y en VBScript:

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverSideIncludeSection = adminManager.GetAdminSection("system.webServer/serverSideInclude", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverSideIncludeSection.Properties.Item("ssiExecDisable").Value = True

adminManager.CommitChanges()

Conclusiones

Si necesitamos un sitio web dinámico completo, es posible que usar las directivas SSI no sea le mejor solución, pero si sólo necesitamos hacer uso de poca carga dinámica, podemos usarlas y ahorrarnos un montón de trabajo.
¿Te ha resultado útil? Podemos enviarte más información útil a tu email haciendo


cPanel & Emails Ilimitados con Hostinet

En Hostinet todos nuestros Hosting web incluyen por defecto un panel de control cPanel. Además, pensamos que lo mejor es siempre utilizar cuentas de correo electrónico personalizadas con tu propio dominio con el fin de personalizar tu negocio o dotar de más seriedad tus comunicaciones.

De hecho, por muy poco al mes puedes contratar el plan de hosting que mejor se adapte a tus necesidades o a tu futuro proyecto web, así como también un dominio bajo el cual tener tu propio email o todas las cuentas de correo electrónico que desees (siempre que estas no superen los 5 GB en el plan ilimitado y los 10 GB en el plan Cloud Pro).

Hosting SSD con Hostinet

En Hostinet trabajamos desde hace más de 15 años con servidores ubicados en España (Madrid). ¡Somos expertos en cPanel!
Y ahora también puedes contratar nuestro Hosting SSD o Hosting SSD Cloud (Multi-dominio) para aumentar el rendimiento de tu web hasta en un 95%.

Hosting SSD

Hostinet SSD Básico –> Características y Precios

Hosting SSD Cloud (Multi-Dominio)

Hostinet SSDCloud –> Características y Precios