Kapitel 3. Server-Side Includes

Apache har en parser indbygget, så når en webside afsendes kan Apache indsætte stumper af HTML-kode for eksempel hvis alle sider skal have et fælles hoved eller fod. Apache kan også indsætte den dato hvor HTML-filen sidst blev rettet, og f.eks. inkludere eller udelukke HTML-kode alt efter hvilken browser der læses med.

Alle disse features kaldes under et for Server-Side Includes, og forkortes SSI. SSI gør mange trivielle ting lettere, men det betyder også at sider skal fortolkes før de afsendes, hvilket betyder at det tager længere tid at sende en webside.

3.1. Konfiguration af Apache for at udføre SSI

For at Apache skal udføre SSI, skal følgende linjer indsættes eller udkommenteres i /etc/httpd/conf/httpd.conf eller en af de filer den inkludere f.eks. /etc/httpd/conf/srm.conf


AddType text/html .shtml
AddHandler server-parsed .shtml

Alle filer med typen .shtml bliver så fortolket af Apaches SSI-modul (mod_include), og resultatet udskrives med mediatypen text/html, dvs. som en HTML-fil.

For at slå SSI til for et bestemt katalog f.eks. /var/www/html skal "Options Includes" inkluderes i katalogets konfiguration, hvor disse befinder sig i enten filen /etc/httpd/conf/httpd.conf eller filen /etc/httpd/conf/access.conf, f.eks.:


<directory /var/www/html >
Options Includes
</directory>

Bruges IncludesNOEXEC istedet for Includes, så kan dynamisk genereret output ikke inkluderes, dvs. alle inkludes der anvender CGI-programmer eller udfører kommandofortolker negligeres.

Filer som ender på .html eller .htm vil ikke blive fortolket. Kun filer som slutter på .shtml. Det kan dog være praktisk også at fortolke visse .html og .htm filer. Dette kan vha. XBitHack kommandoen som følger


<directory /var/www/html >

# "*.shtml"-filer fortolkes
Options Includes

#filer med chmod u+x fil fortolkes
XBitHack on
</directory>

Alle filer hvor brugeren har rettigheder til at udføre dem vil nu blive fortolket (chmod u+x fil.html). Normalt bliver SSI-svar ikke cachet, fordi deres indhold kan variere fra gang til gang, for eksempel ved at dags dato indsættes et sted. Men hvis de HTML-stumper der indsættes er statiske, dvs. at man f.eks. indsætter den samme HTML-kode som hoved og fod hver gang, så kan siden jo sagtens caches uden problem.

Man kan gøre dette muligt med "XBitHack full". Alle filer hvor både brugeren og gruppen har rettighed til at udføre filen, vil nu blive afsendt med et "Last-Modified"-felt i HTTP-hovedet, som fortæller browseren, hvornår filen sidst blev ændret (chmod ug+x fil.html).

Bruger man "XBitHack full" og ændrer i de HTML-stumper der indsættes som hoved og fod, vil det derfor være hensigtsmæssig at 'touch'e alle filer der får hoved og fod indsat, således at den dato der returneres altid er nyere end HTML-stumpernes, og browseren er i stand til at cache svaret. Følgende kommandoer finder alle filer i og under kataloget /var/www/html, der kan udføres af brugeren og gruppen (ug+x), og opdaterer tiden på alle filerne:


[tyge@hven tyge]$ find /var/www/html -perm 110 | xargs touch