Introducción a los ‘Server Side Includes’
Los Server Side Includes, o simplemente SSI, nos proporcionan una sencilla forma de automatizar ciertos aspectos de la creación y posterior mantenimiento de nuestro sitio web, y sin necesidad de saber programar en Perl o PHP.
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.
El uso de SSI consume más recursos del sistema su utilización supone una carga adicional del servidor. Aunque esto es inevitable y lo mismo ocurre con los scripts en PHP o CGI, es una cuestión de comodidad contra eficiencia. Obviamente, no debemos hacer que Apache evalúe todas las páginas HTML antes de devolverlas al cliente, ya que seguramente en muchas de ellas no habrá directivas SSI y estaremos sobrecargando el sistema inútilmente. Por lo tanto, debemos diferenciar las páginas HTML y las que incluyen instrucciones SSI, para ello nada mejor que la solución estándar, la de usar la extensión “shtml” con las páginas que deben ser evaluadas.
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 sino 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.
interesante
A mi solo me funciono cambando el texto asi:[PHP]
Options all
Order allow,deny
Allow from all
AddType text/html .shtml
AddHandler server-parsed .shtml[/PHP]Los puntos me daban error, y la linea AddOutputFilter INCLUDES .shtml tambien.
Con el cambio citado, todo va bien.
Gracias!.
Ahora: pa que me sirve SSI?
Los includes y todo en genral, lo hago con PHP, pa que ssi?
Salu2!.
OK el artículo para Apache. ¿Pero cómo se trabajan los SSI con Internet Information Server de Microsoft?
No deberia haber problemas. De hecho SSI es la forma normal de hacer includes cuando trabajas con ASP.
Por cierto, algo de eso escribi hace tiempo: http://www.hospedaxes.com/recursos/articulo.php?id=47
Esto esta muy bien pero se usa muy poco y se podria considerar como “un lenguaje para principiantes”
El anonimo no tiene mucha idea, pues los includes se usan mucho para paginas dinamicas para cabeceras, menus, publicidad….
Buen tema, disculpen, tengo una gran duda, estoy desarrollando una web con contenido totalmente dinamico basado en php y Mysql (tambien podria ser con ASP y SQL), el punto es que lei que los SSI se pueden utilizar para indexar en buscadores contenido dinamico, si alguno de ustedes sabe y me pudiera apoyar se lo agradecreia mucho.
“jya 21.12.2006 – 05:00 – #
Buen tema, disculpen, tengo una gran duda, estoy desarroll…” pues claro que lo indexa los buscadores, juraría que mejor en php, ya que ahora google por ejemplo busca entre las paginas generadas dinamicamente hasta un cierto numero de variables (por ejemplo los posts de foros o blogs…) en cualquier caso para usar una pagina por bloques prefiero el php
Si solo se va a incluir el contenido de un menú o una publicidad utilizar PHP es lo menos práctico o eficiente, es una buena manera de comenzar a desperdiciar los recursos de los que dispónemos en un servicor.
esta muy bueno el articulo pero el texto
Options +Includes
Order allow,deny
Allow from all
…
…
en el servido easyphp 2.0 en el archvio httpd.conf se coloca en alguna parte en especial esque lo use al final y me bloqueo asi que donde se colocaria para que funcione. y tambine en que parte se pone el XBitHack on
Podría ser un peligro si es que se usa en conjunto con los XSS, que inconscientemente presentan algunas páginas.
There have been found even what are called say, on ‘multiple alleles’, that is to say, two or more different ‘versions’ and ‘readings’ -in addition to the normal, non-mutated one -of the same place in the chromosome code; that means not only two, but three or more alternatives in that particular one ‘locus’, any two of which are to each other in the relation ‘dominant-recessive’ when they occur simultaneously in their corresponding loci of the two homologous chromosomes. ,
Furthermore, if an atom is false in the well-founded model of a program then it does not belong to any of its stable models. ,