SSI Tutorial
Server Side Includes, kurz SSI, bieten dem Webdesigner einige interessante
Möglichkeiten. Da SSI vom Webserver ausgeführt wird, ist diese Technik
vollkommen unabhängig vom Browser des Besuchers.
Mirko Kulpa, 07.05.2005
SSI - Was ist das?
Server Side Includes (SSI) sind eine Art Kommandos, die in HTML-Dateien genutzt werden können.
Mit SSI können Teile die auf allen Seiten einer Site identisch sind, in eine extra Datei ausgelagert
werden. Zum Beispiel die Navigation, Banner, Google AdSense oder der Footer. Da die SSI-Kommandos
vom Webserver abgearbeitet werden, bekommt jeder Besucher der Seite den richtigen Inhalt angezeigt.
Anders als bei Java Script oder ActiveX, hat der Browser keinen Einfluss auf die Darstellung.
Egal ob Internet Explorer, Mozilla oder Lynx - alle bekommen den gleichen HTML-Code ausgeliefert.
Sogar der Googlebot und andere Spider "sehen" den richtigen Inhalt der Seiten.
Vorbereitungen
Damit SSI funktioniert, muss das Apache-Modul mod_include geladen sein.
Für die Version 1.3 des Webservers wird dazu folgender Eintrag in der httpd.conf benötigt:
LoadModule includes_module /usr/lib/apache/1.3/mod_include.so
Eventuell muss der Pfad angepasst werden. Oftmals ist der Apache so konfiguriert,
dass nur Dateien mit der Erweiterung .shtml nach SSI durchsucht werden. Damit SSI
auch in .html-Dateien funktioniert werden die folgenden Einstellungen benötigt:
Options +Includes
AddType text/html .html
AddHandler server-parsed .html
Diese Einstellungen können direkt in der httpd.conf oder in der Datei .htaccess erfolgen.
Damit das "Options +Includes" aus der .htaccess funktioniert, muss für das betreffende Directory
allerdings ein "AllowOverride Options" in der httpd.conf stehen.
Eine weitere Möglichkeit SSI zu aktivieren ist die "XBitHack Directive".
Falls Sie ein Webhosting-Angebot nutzen, fragen Sie den Provider nach den notwendigen
Einstellungen für Server Side Includes.
Ein erster Test
Server Side Include werden als HTML-Kommentare notiert, zum Beispiel so: <!--#echo var="DATE_LOCAL" -->
Für einen ersten Test laden Sie die folgende HTML-Datei auf den Webserver:
<html>
<head>
<title>SSI Test 1</title>
</head>
<body>
<h1>SSI Test 1</h1>
<p>
Das aktuelle Datum ist: <!--#echo var="DATE_LOCAL" -->
</p>
</body>
</html>
Beim Aufruf der Datei im Browser sollte das aktuelle Datum angezeigt werden. Anderenfalls überprüfen
Sie bitte die Konfiguration des Webservers. Die Ausschrift [an error occurred while processing this directive]
deutet auf Fehler in der SSI-Notation oder eingebunden CGI-Scripten hin. Hier hilft ein Blick in die Logfiles
des Apache.
Änderungsdatum einer Datei anzeigen
Um das Datum der letzen Aktualisierung einer Datei anzuzeigen, nutzen Sie folgenden Code:
zuletzt aktualisiert am:
<!--#config timefmt="%d.%m.%Y" -->
<!--#echo var="LAST_MODIFIED" -->
Über config timefmt kann das Datumsformat eingestellt werden.
Einige der möglichen Parameter sind:
%d = Tag 2-stellig, z.B. 05
%e = Tag, z.B. 5
%H = Uhrzeit 24-stündig, z.B. 14
%m = Monat, z.B. 05
%M = Minuten, z.B. 08
%S = Sekunden, z.B. 02
%U = Kalenderwoche, z.B. 44
%y = Jahr 2-stellig, z.B. 05
%Y = Jahr 4-stellig, z.B. 2005
Einfügen einer Datei
Per SSI kann der Inhalt einer Datei in eine HTML-Datei eingebunden werden. Diese Datei kann ein CGI-Script
oder eine statische Textdatei sein.
<html>
<head>
<title>SSI Test 2</title>
</head>
<body>
<h1>SSI Test 2</h1>
<p>
Dateiinhalt Datei1.html
</p>
<!--#include virtual="/test/footer.html" -->
</body>
</html>
Die Datei "/test/footer.html" kann auch wieder SSI enthalten:
<p>
Diese Datei wurde am
<!--#config timefmt="%d.%m.%Y" -->
<!--#echo var="LAST_MODIFIED" -->
zuletzt geändert.
</p>
Mit dieser Technik können Sie in jede HTML-Datei zum Beispiel eine Navigation, eine Fußzeile, einen Counter oder ein Banner
einblenden. Bei einer Änderung, müssen Sie nur die per include virtual eingefügte Datei aktualisieren.
Die eingefügte Datei muss auf dem selben Webserver liegen. Am besten geben Sie immer die absolute URL (beginnend mit "/") an.
Die URL darf keinen Hostnamen enthalten.
Variablen
Sie können mit SSI auch Variablen nutzen. Mit:
<!--#set var = "titel" value = "SSI Tutorial" -->
weisen Sie der Variablen "titel" den Wert "SSI Tutorial" zu. Später können Sie mit SSI auf den Inhalt der
Variablen zugreifen.
<p>
Der Titel dieser Datei lautet
<!--#echo var="titel" -->
</p>
Ist die Variable nicht belegt, erscheint ein (none) im Browser.
Der Zugriff auf Variablen ist auch in eingefügten Dateien möglich. Sie können also Variablen setzen und
später in einem eingefügten Footer auf diese zurückgreifen.
Bedingte Ausführung - IF, ELSE, ENDIF
SSI erlaubt es dem Webmaster, einfache Kontrollstrukturen innerhalb von HTML zu nutzen.
Mit einem "if" kann zum Beispiel geprüft werden, ob eine Variable gesetzt ist.
<p>
<!--#if expr="$titel" -->
Der Titel dieser Datei lautet <!--#echo var="titel" -->
<!--#else -->
Diese Datei hat keinen Titel.
<!--#endif -->
</p>
Damit wird verhindert, dass bei leerem Titel ein (none) angezeigt wird. Die vollständige Syntax für das "if"
sieht so aus:
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
Die "test_condition" kann wie folgt aufgebaut sein:
string
wahr, wenn der String niht leer ist
string1 = string2
string1 != string2
string1 < string2
string1 <= string2
string1 > string2
string1 >= string2
! test_condition
wahr, wenn die Bedingung nicht erfüllt ist
test_condition1 && test_condition2
UND-Vernküpfung
test_condition1 || test_condition2
ODER-Vernküpfung
Weitere Möglichkeiten
Server Side Includes bieten noch weitere Möglichkeiten zur Gestaltung von HTML-Dateien. Zum Beispiel
kann die Größe einer Datei angezeigt werden, auf Umgebungsvariablen zugegriffen werden oder ein Shell-Kommando
ausgeführt werden. Informationen liefert die Dokumentation zum Apache.
Es gibt auch einige Einschränkungen. So kann die Ausgabe von CGI/Perl-Scripten kein SSI enthalten, da die Ausgabe
von Scripten nicht nach SSI geparst wird.
Weiterführende Informationen
Weiterführende Informationen finden Sie unter folgenden Links:
|