Studieren in Chemnitz. Wissen, was gut ist.






Apache: Server Side Includes (SSI bzw. XSSI)

Mit den Server Side Includes hat der Autor die Möglichkeit, einige dynamische Elemente in sein Dokument einzufügen, z.B. aktuelle Zeit, File-Größe, letzte Änderung, andere Dokumente.
Folgende Dateien werden vom Apache-Server nach solchen Spezialanweisungen durchsucht und ggf. Aktionen ausgeführt:
Datei-Endung .shtml, z.B. file.shtml
oder
Gesetztes User-X-Bit, z.B. -rwxr-xr-- ... file.html
Achtung: Ist außerdem das X-Bit für die Gruppe gesetzt (wie im Bespiel), wird ein Caching des Dokumentes in externen Cache-Servern erlaubt. Dies ist zu bevorzugen!

Das entsprechende Unix-Kommando: chmod 754 file.html

Anweisungen für Server Side Includes werden als HTML-Kommentare eingefügt:
<!--#element attribut=value attribut=value ... -->

Die Anweisungen im Einzelnen:

Festlegen von Fehlermeldungen, Datums- und Größenformat:
<!--#config errmsg="String" timefmt="Datumsformat" sizefmt="bytes | abbrev"-->
Die errmsg Zeichenkette wird ausgeben, wenn beim Parsen der SSI-Anweisungen ein Fehler auftritt. Das Datumsformat timefmt muß wie bei der C-Funktion strftime(3) angegeben werden. Mit sizefmt bestimme ich, ob eine Größenangabe in Bytes oder als Abkürzung in kB oder MB ausgegeben werden soll. Die Einstellungen werden natürlich erst bei einer entsprechenden Ausgabeanweisung wirksam (s.u.).

Beispiel:
<!--#config errmsg="Not allowed!" timefmt="%d.%m.%Y %R" sizefmt="bytes"-->


Setzen von Variablen:
<!--#set var="variablenname" value="wert"-->

Beispiel: <!--#set var="titel" value="Test-Titel"-->


Ausgabe bestimmter Variablen/Zustände ...:
NEU! <!--#echo encoding="kodierung " var="variablenname"-->
Mit Kodierung kann man den Wert von variablenname kodieren:
entity HTML-Kodierung, z.B. < = &lt; - JETZT STANDARD NEU!
none keine Kodierung - wie bisher - verwenden, wenn in variablenname HTML-Tags stehen sollen!
url URL-Kodierung, z.B. für HREF's

Als Variablenname sind möglich:

DATE_GMT, DATE_LOCAL aktuelles Datum - GMT oder lokale Zeit
DOCUMENT_NAME, DOCUMENT_URI Filename bzw. URL des angeforderten Dokumentes
LAST_MODIFIED letzte Modifikationszeit des aktuellen Dokumenten
HTTP_REFERER, USER_AGENT
u.a. cgi-bin-Umgebungsvariablen
Werte von Server-Zustandsvariablen

Beispiel:
Hallo <!--#echo var="REMOTE_HOST"-->
- aktuelle Zeit: <!--#echo var="DATE_LOCAL"--><BR>
Dokument <B><!--#echo var="DOCUMENT_NAME"--></B>
zuletzt geändert am <B><!--#echo var="LAST_MODIFIED"--></B>

Ausgabe:

Hallo murmur.hrz.tu-chemnitz.de - aktuelle Zeit: 03.04.2003 15:12
Dokument ssi.html zuletzt geändert am 07.03.2002 11:11


Größe und letzte Modifikationszeit von Files:
<!--#fsize virtual="filename"--> <!--#flastmod virtual="filename"-->
Ausgabe der Größe eines Files entspr. sizefmt bzw. der Zeit der letzten Modifikation entspr. timefmt. Als filename kann hier der URL-Pfad (URL ohne http://host/) angegeben werden, im einfachsten Falle ein Filename im selbem Verzeichnis.

Beispiel:
Homepage (<!--#fsize virtual="/index.php"--> Bytes vom
<!--#flastmod virtual="/index.php"-->)

Ausgabe:

Homepage (22,532 Bytes vom 17.03.2003 14:33)


Einfügen anderer Files:
<!--#include virtual="relativer-url"-->
An diese Stelle wird ein durch relativer-url benanntes Dokument eingefügt. Das ist im einfachsten Fall ein Filename (ohne .., kein absoluter URL mit http://host/).

Beispiel:
Einfügen des Files html-text:
<!--#include virtual="html-text"-->

Ausgabe:

Dies ist eingefügter Text mit HTML-Tags.


Ausführen von Kommandos:
<!--#exec cmd="Kommando"-->
An diese Stelle wird die Ausgabe des Kommandos eingefügt.

Beispiel:
<!--#exec cmd="date"-->

Ausgabe:

Thu Apr 3 15:12:59 MEST 2003


Variablen und Alternativen:
Durch Setzen von Variablen und Abtesten bestimmter Werte können Alternativen formuliert werden, um z.B. unterschiedliche Ausgaben für unterschiedliche Browser zu erzeugen.

Beispiel:
<!--#if expr="\"$HTTP_USER_AGENT\" = /Mozilla/"-->
... <BLINK>Netscape Tags</BLINK>
<!--#else -->
... keine Netscape Tags
<!--#endif -->

Ausgabe:

... keine Netscape Tags


Weitere Informationen: Apache Dokumentation