back to top

Abilitare e utilizzare le SSI (Server Side Include) in Apache

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 rischiesta. Si tratta di specifici comandi che possono essere inseriti all’interno di pagine web ed 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 webserver sarebbe costretto ad analizzare ogni singolo file prima di trasmetterlo al client per verificare se al suo interno è presente una direttiova 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 pagina 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 è consfigurato 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, qusto 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.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.