Apache: Darstellung von Verzeichnislisten

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 ...:
<!--#echo var="variablenname"-->
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 - aktuelle Zeit:
Dokument zuletzt geändert am


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:
FTP-Server INDEX (<!--#fsize virtual="/ftp-home/INDEX"--> Bytes vom
<!--#flastmod virtual="/ftp-home/INDEX"-->)

Ausgabe:
FTP-Server INDEX ( Bytes vom )


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:


Ausführen von Kommandos:
... ist bei uns aus Sicherheitsgründen und zur Vermeidung von unnötiger Serverlast nicht erlaubt!

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

Ausgabe:


NEU!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:
... Netscape Tags ... keine Netscape Tags


Weitere Informationen: Apache Dokumentation


Frank Richter,