Con l’espressione Server Side Include (o SSI) si fa riferimento alle inclusioni lato server, gestite cioรจ da Apache prima dell’invio del file al client che ne ha fatto richiesta. Si tratta di specifici comandi che possono essere inseriti all’interno di pagine web e eseguiti sul server prima che queste vengano inviate ai client che le hanno richieste. Le tipiche operazioni effettuate mediante SSI sono:
- esecuzione di script CGI;
- inclusione di file contenenti porzioni di codice ricorrenti (ad esempio menu).
Un utilizzo comune delle SSI รจ quello di includere un menu di navigazione in tutte le pagine del sito web: mediante questa tecnica il sorgente del menu sarร inserito in un file separato che poi verrร incluso in tutte le pagine Web. Quando sarร necessario modificare il menu si effettuerร la modifica solo sul file di inclusione e non tutte le pagine Web. La modifica al file di inclusione, ovviamente, avrร effetto su tutte le pagine che lo includono.
Configurazione di Apache per abilitare il supporto SSI
La prima cosa da fare รจ assicurarsi che sul server sia installato e abilitato il modulo mod_include (normalmente รจ presente di default quindi non รจ necessario fare nulla). Il passaggio successivo consiste nel modificare il file httpd.conf per abilitare le inclusioni; la direttiva da modificare รจ Options in questo modo:
Options +Includes
Questa semplice direttiva, tuttavia, non puรฒ essere considerata una pratica ottimale. Cosรฌ facendo, infatti, il web server sarebbe costretto ad analizzare ogni singolo file prima di trasmetterlo al client per verificare se al suo interno รจ presente una direttiva di tipo include. La cosa migliore da fare, quindi, รจ limitare il funzionamento delle SSI a specifiche estensioni di pagina (ad esempio .shtml).
Per fare ciรฒ, si aggiungano queste direttive:
AddType text/html .shtml
AddHandler server-parsed .shtml
Cosรฌ facendo si informa il server che il contenuto delle pagine di tipo .shtml รจ HTML ma queste devono essere parsate dal server prima di restituirle al client.
Esempio di direttive SSI
Ora che il tuo web server Apache รจ configurato per le SSI, puรฒ essere utile prendere confidenza con lo strumento effettuando una serie di prove.
La sintassi per le direttive SSI รจ la seguente:
<!--#include virtual="/file-da-includere.html" -->
Tornando all’esempio del nostro ipotetico menu, il codice da utilizzare sarร qualcosa del genere:
<!--#include virtual="/menu.html" -->
Volendo รจ anche possibile includere un file CGI (come detto all’inizio della lezione). Per farlo utilizzeremo:
<!--#include virtual="/cgi-bin/mio-script.cgi" -->
Le SSI possono essere utilizzate anche per stampare a video data e ora, in questo modo:
<!--#echo var="DATE_LOCAL" -->
Oppure per mostrare data e ora di ultima modifica di un file, in questo modo:
<!--#flastmod file="index.html" -->
In questo esempio stamperemo a video la data e ora di ultima modifica del file index.html nella cartella corrente.
In merito a questi ultimi due esempi รจ il caso di segnalare che qualora l’output prodotto non sia del formato voluto, questo puรฒ essere modificato mediante la direttiva #config in questo modo:
<!--#config timefmt="%A %B %d, %Y" -->
Eseguire comandi con le SSI
Le SSI possono essere utilizzate anche per includere il risultato di un comando della Shell come, ad esempio:
<!--#exec cmd="ls" -->
Con questo codice, in ambiente Linux, stamperemo a video il contenuto della cartella corrente. Questa funzionalitร puรฒ essere molto utile per visualizzare informazioni dinamiche e aggiornate in tempo reale.