Server Side Includes
Server Side Includes (englisch für serverseitige Einbindungen), auch bekannt als SSI, sind in (meist HTML-)Dokumente eingebettete, einfach zu nutzende Skript-Befehle, die auf dem Webserver ausgeführt werden, bevor das Dokument an den Client ausgeliefert wird. Sie stellen eine einfach zu verwendende Alternative zu Programmen bzw. Skripten dar, die das ganze Dokument dynamisch generieren. Die Sprache ist Turing-vollständig.[1]
Entstehung
Ursprünglich wurden SSI als Apache-Modul mod_ssi
eingeführt. Heutzutage unterstützen auch andere Webserver die Skriptsprache, unter anderem der IIS von Microsoft.
Verwendung
Mit SSI kann der statische Inhalt einer Datei oder die dynamische Ausgabe eines Programms/Skriptes in ein Dokument eingefügt werden. Die zur Verfügung stehenden Befehle sind bewusst spartanisch gehalten: Fallunterscheidungen, Variablen speichern und ausgeben, CGI-Programme ausführen oder andere Dateien einbinden.
Syntax
Server Side Includes haben die folgende Syntax:
<!--#befehl parametername1="wert" parametername2="wert" -->
Das einleitende <!--
und das abschließende -->
entsprechen den Zeichen für Beginn und Ende eines HTML- oder XML-Kommentares und sorgen dafür, dass der Browser die Befehle nicht anzeigt, falls SSI deaktiviert ist.
Wichtige Befehle
Befehl | Parameter | Beschreibung | Beispiel |
---|---|---|---|
include | file oder virtual | Sorgt dafür, dass der Inhalt der Datei eingefügt wird. file adressiert diese Datei relativ zum aktuellen Verzeichnis, virtual relativ zum Root-Dokument-Verzeichnis. | <!--#include file="header.shtml" -->
|
set | var, value oder errmsg | Schreibt Inhalt von value in die Variable var. Errmsg definiert die Standard-Fehlermeldung, die bei den nächsten Fehlern ausgegeben werden soll. Kann z. B. vor ein SSI-Include gesetzt werden und wird dann angezeigt, wenn die Datei nicht geladen werden kann. | <!--#set var="test" value="Hallo Welt!" --> oder <!--#set errmsg="Es ist ein Fehler aufgetreten!" --> |
echo | var | Gibt Variable var wieder. Es kann sich dabei um selbstdefinierte Variablen handeln oder um CGI-Umgebungsvariablen wie z. B. ${REMOTE_ADDR} . |
<!--#echo var="test" --> |
exec | cgi oder cmd | Führt das Programm cgi oder den Befehl cmd aus und fügt dessen Ausgabe ein. | <!--#exec cmd="ls -lsa" --> |
if | expr | Prüft den Ausdruck expr, gültig sind dabei = gleich, != ungleich, < kleiner, > größer oder ein regulärer Ausdruck. Es können mehrere Kriterien aneinander gereiht werden, indem man sie mit || für ODER oder && für UND voneinander trennt.
Ein praktischer Einsatzzweck ist beispielsweise die Internationalisierung einer Webseite: |
<!--#if expr="${a} = ${b} || ${b} > 2 && ${a} != 0" --> HTML <!--#endif -->
|
X-Bit-Hack
Der Webserver erkennt HTML-Seiten mit Server Side Includes meist an der Dateiendung .shtml
oder .stm
. Somit müssen nicht sämtliche HTML-Seiten nach SSI-Befehlen durchsucht werden, was die Seitenauslieferung beschleunigt. Um allerdings vor dem Benutzer die Verwendung von SSI zu verbergen, besteht eine Alternative, die zuerst vom Apache-Webserver eingeführt wurde. Dabei werden HTML-Dateien, die SSI-Anweisungen enthalten, an einem speziellen Datei-Attribut erkannt. Es handelt sich dabei um den sogenannten „X-Bit-Hack“. Ist diese Funktion im Webserver aktiviert (z. B. durch die Direktive XBitHack on
in der .htaccess-Datei), werden alle HTML-Seiten, bei denen das Ausführ-Bit (execute bit) gesetzt ist, vom SSI-Interpreter ausgewertet, ehe sie an den Client ausgeliefert werden. Da die Dateirechte vom Client aus nicht sichtbar sind, kann so die Verwendung von SSI vor dem Benutzer verborgen werden.
Ähnliche Konzepte
Weblinks
- Apache Tutorial: Introduction to Server Side Includes, englischsprachiges Tutorial vom Apache-Projekt
- Server Side Include commands, kurze, englischsprachige Übersicht vom W3C
- SELFHTML: Server Side Includes, deutschsprachige Dokumentation
- Using Server Side Includes, kurzer englischsprachiger Einführungsartikel, erschienen in der Zeitschrift Apache Week
Einzelnachweise
- http://www.janschejbal.de/projekte/ssituring/ Server Side Includes Turing machine, Jan Schejbal, zuletzt abgerufen am 12. August 2010.