BananaJoes Apache2 SSI


bananapache

Die Aufgabe der Server Side Includes (SSI) besteht darin, Aktionen auslösende Anweisungen in die Dokumente einzubinden.
Dergleichen kann man zwar auch über CGI Skripte erreichen, doch mittels SSI ist der nötige Aufwand oft wesentlich geringer.
Die Anwendungsmöglichkeiten sind riesig.

Direktiven

Um SSI nutzen zu können, müssen diese Direktiven in der httpd.conf angegeben werden.

AddOutputFilter INCLUDES .shtml
Options Includes
AddType text/html .shtml

Dies erfolgt an folgenden Stellen in der httpd.conf, die wie folgt gekennzeichnet sind:

<Directory "F:/Apache2/htdocs">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI Multiviews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
Options Indexes Includes FollowSymLinks <---- dies ist die entsprechende Zeile für die Options Direktive


# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#
AddType application/x-tar .tgz
AddType text/html .shtml <---- dies ist die entsprechende Zeile für die AddType Direktive


# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddOutputFilter INCLUDES .shtml <---- bei dieser Zeile braucht i.R. nur die Auskommentierung entfernt werden

 

Mit AddType text/html .shtml und AddOutputFilter INCLUDES .shtml teilen wir dem Webserver mit, dass alle Dateien mit der Endung .shtml durch den SSI-Prozessor geparst werden. Es ist auch jede andere Endung möglich, wie z.B. .ssi oder .banana, aber eher unüblich, da im allgemeinen .shtml als Standard eingerichtet ist.

Options Includes aktiviert die Verarbeitung von SSI's

Diese Direktiven können auch mittels des .htaccess Mechanismus übergeben werden.

Hiermit ist die Verwendung von SSI's mit dem Apache Webserver fertig eingerichtet.


Aber wie benutzen wir SSI?
Wir geben in dem .shtml Dokument eine spezielle Folge von Strings ein, die der Apache Webserver bei der Rückgabe mit Referenzstrings vergleicht, und durch dynamisch generierte Nachrichten ersetzt.
Diese Strings besitzen ein eigenes Format, damit sie nicht mit anderen Dingen verwechselt werden können.
Die Syntax eines SSI Befehls (des oben angesprochenen Strings) lautet:

<!--#element attribut=wert attribut=wert ... -->

In der folgenden Tabelle sind die einzelnen Elemente mit ihren möglichen Attributen aufgeführt.

Elemente

Element Attribut
config
errmsg Der Wert ist eine Nachricht, die im Fehlerfall angezeigt wird.
sizefmt Legt das Format für die Ausgabe von Dateigrößen fest.
timefmt Legt das Format für die Ausgabe von Datumsangaben fest.
echo
var Name der auszugebenen Variable
exec
cgi Der exec Befehl führt ein CGI aus und fügt das Ergebnis an dieser Stelle wieder ein.
cmd
  Der Server führt den angegebenen String über die Shell aus.
fsize
file Der Wert ist ein Pfad relativ zum Verzeichnis des gerade bearbeiteten Dokuments.
virtual Der Wert ist ein %-codierter URL Pfad relativ zum gerade bearbeiteten Dokument.
flastmod
  Dieser Befehl gibt das Datum der letzten Modifikation der Datei aus.
include
file Der Wert ist ein Pfad relativ zum Verzeichnis des gerade bearbeiteten Dokuments. Er darf weder ../ enthalten noch darf es sich um einen absoluten Pfad handeln.
virtual Der Wert ist ein %-codierter URL Pfad relativ zum gerade bearbeiteten Dokument.

Beispiele

Ein paar Beispiele :

Die Größe einer Datei ausgeben:
Mit dem fsize Befehl kann die Größe einer Datei innerhalb des Dokumentes ausgegeben werden.

<!--#config errmsg="Ein Fehler ist aufgetreten!"-->
<!--#config sizefmt="bytes"-->
Die Datei bananajoe.jpg ist <!--#fsize="bananajoe.jpg"--> groß.

Mittels des Include Befehls kann eine Datei in eine andere eingebettet werden.

<!--#config errmsg="Ein Fehler ist aufgetreten!"-->
Der folgende Text wurde aus der Datei blabla.txt eingebunden:
<< <!--#include virtual="blabla.txt"--> >>

Beispiele als .zip herunterladen.