SSI - Server Side Includes

Immer wieder wird danach gefragt oder gesucht. "Server Side Includes" bieten vielfältige Möglichkeiten, um eine Html-Seite mit netten Kleinigkeiten anzureichern.

Voraussetzung

Dein Provider muss SSI unterstützen. Bei bezahltem Webspeicher ist dies i.d.R. der Fall. Außerdem müssen die Dateien, in denen Server Side Includes enthalten sind, die Endung ".shtml" haben. Das signalisiert dem Webserver, dass es sich bei dem entsprechenden Html-Dokument um eine zu "parsende" Datei mit speziellen Kommentaren handelt.

Kurztheorie

Die (SSI-)Kommentare haben immer den folgenden Syntax:

<!--#element attribute=value attribute=value ... -->

Soviel zur Theorie. Im Folgenden stelle ich häufig verwendete SSI-Befehle vor. Die entsprechenden Kommentare sind bei eingeschaltetem CSS farbig hervorgehoben.

Datum

Datumsangaben lassen sich vielfältig nutzen, z.B. "letzte Aktualisierung", "aktuelles Datum" usw. Im ersten Kommentar wird das Format der Zeitangabe definiert und der zweite Kommentar bewirkt die Ausgabe. Ein paar praktische Beispiele:

Tag.Monat.Jahr: 20.11.02
<!--#config timefmt="%d.%m.%y" --><!--#echo var="Date_Local" -->

ausführlich & kurz: Wed, 20. Nov. 02, 22:40 Uhr
<!--#config timefmt="%a, %d. %b. %y, %H:%M Uhr" --><!--#echo var="Date_Local" -->

ausführlich & lang: Wednesday, 20. November 2002, 22:40:19 Uhr
<!--#config timefmt="%A, %d. %B %Y, %H:%M:%S Uhr" --><!--#echo var="Date_Local" -->

Wie man aus den drei Beispielen erkennen kann, wird das Format der einzelnen Angaben mit einem Prozentzeichen und einem Buchstaben festgelegt. Das sind im Einzelnen: der Wochentag (%A), Tag im Monat (%d), der Monat (%B), das Jahr (%Y) und die aktuelle Tageszeit (%H,%M,%S). Kleinschreibung der Buchstaben erzwingt bei einigen Angaben eine verkürzte Schreibweise. (Vergleiche 'kurz' und 'lang'.)

Datum & Copyright

Bei einem größeren Webprojekt kann die Aktualisierung des Urheberrechts-Vermerkes zu einer aufwendigen Sache werden. Das passiert zwar nur einmal im Jahr, wer sich diese Arbeit aber trotzdem sparen will, nutzt SSI:

© 2002 Name
&copy; <!--#config timefmt="%Y" --><!--#echo var="Date_Local" --> Name

Datum & Aktualisierung

Über den aktuellen Stand eines Dokumentes kann man seine interessierten Besucher ebenfalls mittels SSI informieren.

Aktualisiert: 16.10.02
Aktualisiert: <!--#config timefmt="%d.%m.%y" --><!--#echo var="Last_Modified" -->

Die Ausgabeform des Datums kann wie bereits oben gezeigt, im Attribut "timefmt" mit entsprechenden Werten individuell angepasst und präzisiert werden.

Url-Angabe

Ein Besucher speichert eine Seite zum "offline"-Lesen ab. Er setzt aber leider kein Lesezeichen auf das entsprechende Dokument und findet so das Webprojekt, zu dem das Html-Dokument gehört, nie wieder. Das kann man ändern:

URL: http://www.schmager.de/ssi.shtml
URL: http://<!--#echo var="Server_Name" -->/<!--#echo var="Document_Name" -->

Dateigröße

Wie groß ist eine Html-Seite oder ein Bild? Als Vorschau oder als Angabe auf einer Seite kann diese Information problemlos mit SSI eingefügt werden. Vorteil: der Wert passt sich bei Aktualisierungen automatisch an.

Diese Html-Datei ist 9k groß.
Diese Html-Datei ist <!--#fsize file="ssi.shtml" --> gro&szlig;.

Referer

Mit Hilfe von "Referer" lässt sich ein "Zurück-Link", der genauso wie der "Zurück"-Button im Browser funktioniert, realisieren. Das klappt allerdings nur, wenn es ein vorhergehendes Dokument gibt. ;-)

<a href="<!--#echo var="Http_Referer" -->">eine Seite zur&uuml;ck</a>

Include

Das Einfügen von bestimmten Passagen, beispielsweise der Navigation oder von häufig wiederkehrenden Textbausteinen kann mit diesem Befehl realisiert werden.

<!--#include virtual="/inc/navigation.htm" -->

Exec

Der letzte SSI-Befehl, den ich hier vorstellen möchte, eignet sich für die Einbindung von dynamischen Inhalten, die z.B. durch ein Perl-Skript erzeugt werden. Ein häufiger Anwendungsfall dafür sind die beliebten Grafik-Counter.

<!--#exec cgi="/cgi-bin/ssi-counter/counter.cgi" -->

ein Leerzeichen

Und abschließend noch ein Tipp: Bei den Kommentaren muss zwischen dem letzten Anführungszeichen " und dem Kommentarende --> ein Leerzeichen sein. Sonst kann es passieren, dass das Ganze nicht funktioniert.

Mit SSI lassen sich noch weitere interessante Dinge "anstellen". Explizite Betrachtungen würden hier den Rahmen sprengen. Wer mehr über Server Side Includes wissen möchte, der sollte mal einen Blick in die Dokumentation des Apache-Webservers werfen.


interessanter Artikel zum Thema auf schmager.de: Unbegrenzte Möglichkeiten mit CGI