{"id":18336,"date":"2026-03-12T15:08:01","date_gmt":"2026-03-12T14:08:01","guid":{"rendered":"https:\/\/webhosting.de\/server-side-includes-ssi-hosting-config-serverflex\/"},"modified":"2026-03-12T15:08:01","modified_gmt":"2026-03-12T14:08:01","slug":"il-lato-server-include-lhosting-ssi-config-serverflex","status":"publish","type":"post","link":"https:\/\/webhosting.de\/it\/server-side-includes-ssi-hosting-config-serverflex\/","title":{"rendered":"Il lato server include: hosting SSI e configurazione del server web"},"content":{"rendered":"<p><strong>Hosting SSI<\/strong> integra gli include lato server direttamente nei file HTML statici, fornendo cos\u00ec codice HTML finito senza dipendenze lato client. Vi mostrer\u00f2 come attivare SSI, utilizzare le direttive tipiche e implementare il metodo <strong>configurazione del server web<\/strong> su Apache in modo pulito.<\/p>\n\n<h2>Punti centrali<\/h2>\n<p><strong>SSI<\/strong> rende manutenibili le parti di pagina ricorrenti e velocizza la consegna se il server web \u00e8 configurato correttamente.<\/p>\n<ul>\n  <li><strong>Include<\/strong> intestazione, pi\u00e8 di pagina e navigazione.<\/li>\n  <li><strong>.htaccess<\/strong> consente l'analisi di .html e .shtml.<\/li>\n  <li><strong>Sicurezza<\/strong> attraverso diritti restrittivi e NOEXEC.<\/li>\n  <li><strong>Prestazioni<\/strong> vantaggi della cache e di NVMe.<\/li>\n  <li><strong>Compatibilit\u00e0<\/strong> con Apache e hosting condiviso.<\/li>\n<\/ul>\n<p>Con poche direttive, \u00e8 possibile costruire pagine modulari e ridurre significativamente il lavoro di manutenzione senza dover utilizzare un CMS. In questa guida, mi affido a esempi chiari, a solide <strong>Pratica<\/strong> e configurazioni affidabili per risultati rapidi.<\/p>\n\n<h2>Cosa sono i Server Side Include (SSI)?<\/h2>\n<p><strong>Il server include<\/strong> sono istruzioni in HTML che il server web interpreta prima della consegna. Il codice \u00e8 contenuto in commenti come <code><!--#include virtual=\"\/includes\/header.html\" --><\/code> e finisce come markup finito nel browser. In questo modo si risparmia la logica JavaScript per i blocchi ripetuti e si ottiene un contenuto pulito e indicizzabile. La sintassi inizia sempre con <code>&lt;!--#<\/code>, utilizza lettere minuscole e richiede virgole invertite perch\u00e9 il parser funzioni correttamente. Ho mantenuto i comandi al minimo, in modo che l'overhead rimanga basso e il parser <strong>Manutenzione<\/strong> rimane chiaro.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/serverraum-ssi-hosting-4728.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Requisiti e configurazione del server web<\/h2>\n<p><strong>Apache<\/strong> il modulo <code>mod_include<\/code> deve essere attivo perch\u00e9 SSI funzioni. Molti host analizzano solo <code>.shtml<\/code>; con un'adeguata <code>.htaccess<\/code> si attiva anche il parsing per <code>.html<\/code>. Controllare anche se il pacco <code>ConsentiOverride<\/code> \u00e8 consentito per la propria directory, altrimenti il file non funzioner\u00e0. Per scegliere lo stack giusto, vale la pena dare un'occhiata a <a href=\"https:\/\/webhosting.de\/it\/confronto-tra-server-web-apache-nginx-litespeed-perfopt-serverboost\/\">Apache, Nginx o LiteSpeed<\/a>, perch\u00e9 SSI si basa su Apache sul lato server. Presto attenzione al <strong>Configurazione<\/strong> sempre sicurezza, prestazioni e scalabilit\u00e0 futura.<\/p>\n\n<h2>Configurazione granulare di Apache senza .htaccess<\/h2>\n<p><strong>Le migliori pratiche<\/strong> nei propri ambienti server: Abilitare SSI a livello centrale nel vHost o nella configurazione di Apache e <code>AllowOverride Nessuno<\/code> utilizzo. In questo modo si evita di dover leggere il <code>.htaccess<\/code> e mantenere il controllo sulle opzioni consentite.<\/p>\n<pre><code>NomeServer example.org\n  DocumentRoot \/var\/www\/example\/public_html\n\n  \n    Opzioni +IncludeNOEXEC\n    AllowOverride Nessuno\n    Richiede tutti i permessi\n    AddOutputFilter INCLUDE .html\n    # Opzionale: analizzare solo i file selezionati\n    \n      Opzioni +IncludeNOEXEC\n      AddOutputFilter INCLUDE .html\n    \n  \n\n  # Alternativa, attivazione selettiva: XBitHack (vedere sotto)\n  # XBitHack completo\n<\/code><\/pre>\n<p>Negli ambienti di hosting condiviso, si rimane con <code>.htaccess<\/code>, sui miei server, tuttavia preferisco mantenere la configurazione in bundle nel vHost.<\/p>\n\n<h2>Impostazione passo dopo passo<\/h2>\n<p><strong>Preparazione<\/strong> inizia nell'anagrafica del documento, di solito <code>pubblico_html<\/code>. Creare una directory <code>\/include\/<\/code> e scrivete l\u00ec il vostro <code>intestazione.html<\/code> e <code>pi\u00e8 di pagina.html<\/code> e utilizzare percorsi assoluti nelle direttive. Quindi creare il file <code>.htaccess<\/code> nella root e inserire le seguenti righe in modo che Apache analizzi i file HTML su SSI:<\/p>\n<pre><code>AddType text\/html .html\nAddOutputFilter INCLUDE .html\nOpzioni +Include\nAggiungiHandler server-parsed .html\n<\/code><\/pre>\n<p>Ora \u00e8 possibile integrare i blocchi in qualsiasi pagina, ad es. <code><!--#include virtual=\"\/includes\/header.html\" --><\/code>. Poi cancello sempre le cache del browser e quelle del lato server per salvare le modifiche in modo sicuro. <strong>controllo<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/ServerSideIncludesKonfigur6894.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Utilizzare correttamente il file di inclusione virtuale rispetto a quello di inclusione<\/h2>\n<p><strong>Scelta<\/strong> della variante determina la flessibilit\u00e0 e la protezione dell'accesso:<\/p>\n<ul>\n  <li><strong>includere virtuale<\/strong> utilizza percorsi URL (ad es. <code>\/includes\/header.html<\/code>), quindi funziona con le riscritture, le regole di accesso e pu\u00f2 risolvere in modo pulito i percorsi assoluti. Adatto se i frammenti possono essere visibili sul web o se si lavora deliberatamente attraverso lo spazio URL.<\/li>\n  <li><strong>includere il file<\/strong> legge direttamente dal file system ed \u00e8 <em>Relativo<\/em> al file corrente (senza barra iniziale). Ignora le riscritture degli URL ed \u00e8 ideale per <em>interno<\/em> Frammenti che non devono essere direttamente accessibili. Utilizzare nomi di file univoci, come ad esempio <code>header.inc.html<\/code> e posizionarlo in una sottodirectory della pagina, ad esempio <code>include_priv\/<\/code>.<\/li>\n<\/ul>\n<p>Un modello tipico per i frammenti privati:<\/p>\n<pre><code># Nella sottocartella \/includes_priv\/ del progetto:\n# .htaccess (bloccare l'accesso dall'esterno)\nRichiedere tutti gli accessi negati\n<\/code><\/pre>\n<pre><code><!-- Nella pagina (ad es. index.html, stessa directory principale) -->\n<!--#include file=\"includes_priv\/header.inc.html\" -->\n<!--#include file=\"includes_priv\/footer.inc.html\" -->\n<\/code><\/pre>\n<p>Il browser non pu\u00f2 recuperare i file, ma SSI continua a leggerli localmente. Evito i percorsi annidati e mantengo <code>file<\/code>-I riferimenti devono essere il pi\u00f9 possibile piatti, in modo che il progetto rimanga chiaro.<\/p>\n\n<h2>Sicurezza e autorizzazioni presso SSI<\/h2>\n<p><strong>Sicurezza<\/strong> inizia con i diritti: Impostare i file su <code>644<\/code> e cartelle su <code>755<\/code>, per evitare rilasci accidentali. Evitare <code>#exec<\/code> perch\u00e9 i diritti di esecuzione aprono la porta all'infiltrazione. Negli ambienti condivisi uso <code>Opzioni +IncludeNOEXEC<\/code>, per escludere le chiamate di script. File sensibili come <code>.env<\/code> o le configurazioni sono bloccate con un ulteriore <code>.htaccess<\/code> nella directory. In questo modo si riduce notevolmente il rischio e si mantiene la <strong>Controllo<\/strong> tramite contenuti integrati.<\/p>\n\n<h2>Hardening: ambito, intestazioni e confini puliti<\/h2>\n<p><strong>Ambito<\/strong> Mantenere un atteggiamento rigoroso: Consentire SSI solo dove \u00e8 necessario. In progetti di grandi dimensioni, limito il parsing con <code>FileMatch<\/code> a modelli specifici, ad esempio. <code>*.inc.html<\/code> oppure <code>*.shtml<\/code>. Inoltre, ho impostato le intestazioni di sicurezza a livello globale, perch\u00e9 l'output HTML finito ne beneficia direttamente:<\/p>\n<pre><code>Insieme di intestazioni X-Content-Type-Options \"nosniff\".\n  Impostazione dell'intestazione X-Frame-Options \"SAMEORIGIN\"\n  Impostazione intestazione Referrer-Policy \"strict-origin-when-cross-origin\".\n  Impostazione dell'header Content-Security-Policy \"default-src 'self'\".\n<\/code><\/pre>\n<p>Separo in modo netto i frammenti accessibili al pubblico (ad esempio, i pi\u00e8 di pagina) e gli elementi interni (ad esempio, i file variabili), in modo che le regole rimangano chiare e le verifiche siano rapide.<\/p>\n\n<h2>Esempi pratici di SSI per i progetti<\/h2>\n<p><strong>Esempio<\/strong> 1: Un'intestazione globale. Posto <code>\/includes\/header.html<\/code> e legarlo con <code><!--#include virtual=\"\/includes\/header.html\" --><\/code> in ogni pagina. Esempio 2: pi\u00e8 di pagina con avviso di copyright via <code><!--#include virtual=\"\/includes\/footer.html\" --><\/code>. Esempio 3: un timbro con data sopra <code><!--#echo var=\"DATE_LOCAL\" --><\/code> nella barra laterale. Esempio 4: Ultima modifica a un file con <code><!--#flastmod file=\"\/path\/file.html\" --><\/code> per un aggiornamento trasparente. Mantengo i percorsi costantemente assoluti in modo che l'integrazione in diverse profondit\u00e0 di directory sia affidabile. <strong>funziona<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/ssi-hosting-webserver-konfig-4567.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Variabili, formattazione e logica semplice (XSSI)<\/h2>\n<p><strong>direttive<\/strong> come <code>set<\/code>, <code>eco<\/code>, <code>configurazione<\/code> e <code>se<\/code> sono sufficienti per molti casi senza scivolare nella logica applicativa.<\/p>\n<pre><code>&lt;!-- Ausgabeformat f&uuml;r Datum\/Gr&ouml;&szlig;en setzen --&gt;\n&lt;!--#config timefmt=&quot;%d.%m.%Y, %H:%M&quot; sizefmt=&quot;abbrev&quot; --&gt;\n\n&lt;!-- Eigene Variablen definieren und ausgeben --&gt;\n&lt;!--#set var=&quot;site_env&quot; value=&quot;production&quot; --&gt;\n&lt;!--#set var=&quot;build_date&quot; value=&quot;2026-03-10 12:30&quot; --&gt;\nCostruire: &lt;!--#echo var=&quot;build_date&quot; --&gt; (Env: &lt;!--#echo var=&quot;site_env&quot; --&gt;)\n\n&lt;!-- Einfache Bedingungen --&gt;\n&lt;!--#if expr=&quot;$site_env = \/production\/&quot; --&gt;\n  &lt;p&gt;&lt;strong&gt;Suggerimento dal vivo:&lt;\/strong&gt; Ambiente produttivo&lt;\/p&gt;\n&lt;!--#else --&gt;\n  &lt;p&gt;Staging\/Test&lt;\/p&gt;\n&lt;!--#endif --&gt;\n\n&lt;!-- Umgebungsvariablen inspizieren (Debug) --&gt;\n&lt;pre&gt;&lt;!--#printenv --&gt;&lt;\/pre&gt;\n<\/code><\/pre>\n<p>Mantengo la logica piatta, evito le nidificazioni e documento le variabili in un unico posto (ad esempio. <code>includes_priv\/vars.inc.html<\/code>), che ho ricevuto via <code>file<\/code> in ogni pagina.<\/p>\n\n<h2>Prestazioni, cache e CDN con SSI<\/h2>\n<p><strong>Prestazioni<\/strong> beneficia di SSI perch\u00e9 il server produce codice HTML finito e il browser ha meno lavoro da fare. Integro il tutto con la compressione dei file tramite <code>mod_deflate<\/code> oppure <code>mod_brotli<\/code>, in modo che le trasmissioni rimangano piccole. La cache lato server a livello di proxy o di acceleratore di app pu\u00f2 inoltre bufferizzare i risultati HTML. Un CDN aiuta la distribuzione globale, mentre il parsing SSI continua a essere effettuato sul server di origine. La sequenza corretta rimane importante: prima il rendering, poi il markup finito nella cache. <strong>tenere<\/strong>.<\/p>\n\n<h2>Intestazione cache, ETag e parsing mirato<\/h2>\n<p><strong>Intestazione<\/strong> determinare il modo in cui i browser e i proxy riutilizzano i risultati. Per i frammenti dinamici, utilizzo valori moderati di et\u00e0 massima e permetto la memorizzazione nella cache delle carenze:<\/p>\n<pre><code>Intestazione impostata Cache-Control \"public, max-age=600, stale-while-revalidate=30\".\n  Intestazione non impostata Pragma\n\n# Standardizzare o disattivare gli ETag per evitare incongruenze\nFileETag MTime Dimensione\n<\/code><\/pre>\n<p>Se non si dispone di tutti i <code>.html<\/code> ma solo di file specifici, si risparmiano risorse. Si sono dimostrati due modi:<\/p>\n<ul>\n  <li><strong>Approccio FilesMatch:<\/strong> Solo <code>*.inc.html<\/code> e analizzare questi frammenti per <code>virtuale<\/code> oppure <code>file<\/code> integrare.<\/li>\n  <li><strong>XBitHack:<\/strong> Con <code>XBitHack completo<\/code> vengono analizzati solo i file con il bit di esecuzione impostato. Inoltre, Apache imposta il parametro <em>Ultima modifica<\/em>-basato sul timestamp del file, che semplifica la convalida.<\/li>\n<\/ul>\n<pre><code># Parsing selettivo tramite XBitHack\nXBitHack completo\n# \"marcare\" il file con chmod +x\n# chmod +x index.html\n<\/code><\/pre>\n<p>Dopo le modifiche, verifico sempre se <em>Ultima modifica<\/em> e il comportamento della cache si comportano come previsto, in modo che gli utenti vedano i nuovi contenuti senza doverli ricaricare.<\/p>\n\n<h2>SSI vs. PHP e CMS<\/h2>\n<p><strong>Confronto<\/strong> si rivela cos\u00ec: SSI \u00e8 adatto a pagine modulari e statiche con qualche spruzzata di dinamismo. PHP copre la logica applicativa, i moduli o l'accesso al database, ma richiede una maggiore manutenzione. Un CMS fornisce funzioni editoriali, ma costa risorse e richiede aggiornamenti regolari. Per le landing page, la documentazione e i piccoli siti web con moduli ricorrenti, ritengo che SSI sia la soluzione pi\u00f9 snella. Prima di prendere una decisione, verifico i contenuti e il mix di <a href=\"https:\/\/webhosting.de\/it\/guida-alle-pagine-statiche-e-dinamiche-webprojekt-hub\/\">pagine statiche e dinamiche<\/a>, in modo che l'architettura corrisponda all'obiettivo e possa essere facilmente <strong>Scalabile<\/strong> rimane.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/SSI_Hosting_Webserver_9982.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Percorso di migrazione e approcci ibridi<\/h2>\n<p><strong>Pragmatico<\/strong> switch: iniziare con header\/footer come include, aggiungere navigazione e teaser ricorrenti e lasciare la logica speciale a PHP o al vostro CMS. In questo modo, \u00e8 possibile ridurre gradualmente le duplicazioni di template senza interrompere i processi editoriali. Per le aree completamente statiche (ad esempio, la documentazione), si pu\u00f2 optare per SSI-first e incorporare isole dinamiche (moduli, ricerca) tramite endpoint indipendenti. Mantengo il taglio chiaro, in modo che ogni livello faccia esattamente ci\u00f2 per cui \u00e8 stato costruito.<\/p>\n\n<h2>Selezione dell'hosting per i progetti SSI<\/h2>\n<p><strong>Selezione<\/strong> dipende dalla disponibilit\u00e0 di Apache, <code>mod_include<\/code>, <code>ConsentiOverride<\/code> e di uno spazio di archiviazione NVMe veloce. Presto attenzione alla gratuit\u00e0 <code>.htaccess<\/code>-in modo da poter utilizzare gli include per <code>.html<\/code> possono essere attivati. I piani con un clock di CPU sufficiente garantiscono tempi di risposta brevi, il che rende SSI ancora pi\u00f9 interessante. Le opzioni di cambio senza migrazione facilitano gli aggiornamenti in caso di crescita del progetto. La tabella che segue mostra le caratteristiche tipiche dei piani che SSI esegue in modo ottimale <strong>supporto<\/strong>.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Tariffa<\/th>\n      <th>Prezzo\/mese<\/th>\n      <th>Memoria<\/th>\n      <th>Pagine WordPress<\/th>\n      <th>Compatibile con SSI<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Avviamento<\/td>\n      <td>10 \u20ac<\/td>\n      <td>10 GB NVMe<\/td>\n      <td>1<\/td>\n      <td>S\u00ec (Apache)<\/td>\n    <\/tr>\n    <tr>\n      <td>Pro<\/td>\n      <td>47,60 \u20ac<\/td>\n      <td>75 GB NVMe<\/td>\n      <td>5<\/td>\n      <td>S\u00ec (Apache)<\/td>\n    <\/tr>\n    <tr>\n      <td>Business<\/td>\n      <td>95,20 \u20ac<\/td>\n      <td>150 GB NVMe<\/td>\n      <td>10<\/td>\n      <td>S\u00ec (Apache)<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n<p>Non pianifico le risorse in modo troppo rigido, in modo che le cache funzionino e le riserve rimangano. Se si aggiungono PHP o CMS in un secondo momento, si beneficia di spazio per RAM e CPU senza dover sovraccaricare la cache. <strong>Stabilit\u00e0<\/strong> al rischio.<\/p>\n\n<h2>Diagnosi dei guasti e risoluzione dei problemi<\/h2>\n<p><strong>Problemi<\/strong> spesso appaiono come commenti SSI \u201egrezzi\u201c nel codice sorgente HTML. In questo caso, il server non analizza il file, solitamente mancando di <code>AddOutputFilter INCLUDE .html<\/code> o il tipo MIME non \u00e8 corretto. Controllare anche se il file \u00e8 stato salvato come <code>testo\/html<\/code> e non interferiscono le virgolette dell'editor. I percorsi assoluti impediscono <code>..\/<\/code>-I riferimenti non portano a nulla. Guardo i log del server per ultimi, perch\u00e9 \u00e8 l\u00ec che si trovano gli indizi concreti che mi portano rapidamente al problema. <strong>Causa<\/strong> piombo.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/ssi_hosting_konfig_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Risoluzione avanzata dei problemi: le tipiche insidie<\/h2>\n<p><strong>Errore interno del server 500<\/strong> a <code>Opzioni +Comprende<\/code> in <code>.htaccess<\/code> spesso indica <em>ConsentiOverride<\/em>-restrizioni. Soluzione: impostare l'opzione sul lato server o chiedere l'approvazione all'hoster. <strong>403 Vietato<\/strong> all'indirizzo <code>includere virtuale<\/code> indica restrizioni di accesso nella directory di destinazione; in questi casi \u00e8 meglio usare <code>includere il file<\/code> e bloccare la directory sorgente per l'accesso HTTP. <strong>Problemi di set di caratteri o di distinta base<\/strong> (caratteri invisibili all'inizio del file) pu\u00f2 portare a un output strano: salvare i frammenti come UTF-8 senza BOM. Se si riscontrano spazi bianchi insoliti nel codice minificato, verificare se il processo di compilazione rimuove i commenti e le direttive Ssi. Per le sessioni di debug attivo temporaneamente <code><!--#printenv --><\/code>, per ispezionare intestazioni e variabili, quindi disattivarlo di nuovo.<\/p>\n\n<h2>Proxy inverso e configurazioni moderne<\/h2>\n<p><strong>Architetture<\/strong> con un proxy upstream, come Nginx o Traefik, consentono ad Apache di eseguire il rendering in background. Il proxy si occupa di TLS, cache e compressione, mentre Apache analizza gli include e fornisce l'HTML finito. Ci\u00f2 consente di combinare una bassa latenza con la flessibilit\u00e0 di SSI. Leggete la panoramica di <a href=\"https:\/\/webhosting.de\/it\/configurazioni-di-reverse-proxy-architettura-di-webhosting-proxyhosting\/\">Configurazioni di proxy inverso<\/a>, prima di pianificare l'instradamento. Mi piace iniziare con una catena semplice ed espanderla passo dopo passo, in modo da poter misurare chiaramente gli effetti e determinare la <strong>Prestazioni<\/strong> in modo mirato.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/03\/hosting-serverraum-8391.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Compatibilit\u00e0 e modalit\u00e0 di funzionamento<\/h2>\n<p><strong>Compatibilit\u00e0<\/strong>Apache \u00e8 il sistema di destinazione per l'uso di SSI qui descritto. Molti hoster utilizzano LiteSpeed come sostituto di Apache; la sintassi SSI comune \u00e8 solitamente supportata. Nginx ha le proprie funzioni SSI con una sintassi diversa; in ambienti misti, Nginx svolge tipicamente compiti di proxy, mentre Apache gestisce l'analisi SSI. Per l'MPM di Apache preferisco <strong>evento<\/strong> per siti statici\/SSI-pesanti (in combinazione con PHP-FPM), in quanto mantiene le connessioni pi\u00f9 efficienti. Uso Prefork solo quando i moduli legacy lo rendono necessario.<\/p>\n\n<h2>Distribuzione, versioning e garanzia di qualit\u00e0<\/h2>\n<p><strong>Processo<\/strong> mantenere pulito: I frammenti e i file variabili appartengono al controllo di versione. Definisco degli standard (estensioni di file come <code>.inc.html<\/code>, Struttura della directory <code>\/include\/<\/code> e <code>\/include_priv\/<\/code>) e controllare a ogni commit se gli include possono essere risolti. Un piccolo passo di CI pu\u00f2 caricare una build di staging, cancellare le cache e recuperare una pagina di salute con gli include del test. Un test minimo viene costruito rapidamente:<\/p>\n<pre><code>&lt;!-- test.shtml --&gt;\n&lt;!--#config timefmt=&quot;%Y-%m-%d %H:%M:%S&quot; --&gt;\nOra del server: &lt;!--#echo var=&quot;DATE_LOCAL&quot; --&gt;&lt;br&gt;\nURI: &lt;!--#echo var=&quot;DOCUMENT_URI&quot; --&gt;&lt;br&gt;\nIncludere: &lt;!--#include virtual=&quot;\/includes\/header.html&quot; --&gt;\n<\/code><\/pre>\n<p>Se questa pagina fallisce, il problema \u00e8 quasi sempre nella configurazione di base (parsing, permessi o percorsi). Ho preparato una piccola lista di controllo in modo che possiate eseguire il rollback in pochi minuti.<\/p>\n\n<h2>Punte compatte per una SSI pulita<\/h2>\n<p><strong>Percorsi<\/strong> Ho impostato assolutamente, quindi <code>\/includes\/header.html<\/code> invece di riferimenti relativi, in modo che i binding nelle sottocartelle rimangano stabili. Uso le variabili con parsimonia e le nomino in modo chiaro, per esempio <code>sito_env<\/code> oppure <code>data_costruzione<\/code>. Collaudo le modifiche in un ambiente di staging e solo successivamente le copio dal vivo per evitare tempi di inattivit\u00e0. Prima di apportare qualsiasi modifica al file <code>.htaccess<\/code> Salvo la versione corrente in modo da poterla ripristinare immediatamente, se necessario. Dopo la distribuzione, cancello le cache del browser e del server in modo che gli utenti possano utilizzare la nuova versione senza i vecchi artefatti. <strong>Vedi<\/strong>.<\/p>\n\n<h2>Uso mirato delle funzioni SSI estese<\/h2>\n<p><strong>XSSI<\/strong> porta condizioni semplici e una logica variabile, ma rimane volutamente limitato per mantenere il parsing leggero. I casi tipici sono banner diversi per directory o un suggerimento per versione di lingua. Le condizioni si strutturano con <code><!--#if expr=\"...\" --><\/code> e lo chiude con <code><!--#endif --><\/code>. Per la logica computazionale, \u00e8 meglio passare a PHP o inserire l'output nel processo di creazione in anticipo. Evito le direttive annidate, in modo che la pagina rimanga leggibile e che il file <strong>Debug<\/strong> rapidamente.<\/p>\n\n<h2>Sintesi in testo semplice<\/h2>\n<p><strong>In conclusione<\/strong> SSI offre pagine veloci e manutenibili unendo i contenuti ricorrenti prima che vengano inviati. Con poche righe nel file <code>.htaccess<\/code> si attiva il parsing per <code>.html<\/code> e mantenere la struttura del progetto snella. Si pu\u00f2 ottenere la sicurezza con diritti restrittivi e non usando <code>#exec<\/code>; protegge in ambienti condivisi <code>IncludeNOEXEC<\/code>. Lo storage NVMe, la cache pulita e, se necessario, un proxy upstream garantiscono la velocit\u00e0. Se voglio costruire in modo modulare e fare a meno di spese generali, mi affido all'hosting SSI, proteggo la configurazione del server web in modo pulito e la mantengo per anni. <strong>semplice<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Server Side Includes (SSI) nell'hosting: configurazione, vantaggi e migliori fornitori di **SSI hosting**. Ottimizzate il vostro sito con SSI.<\/p>","protected":false},"author":1,"featured_media":18329,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-18336","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk-webserver-plesk-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"700","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"SSI Hosting","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"18329","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/posts\/18336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/comments?post=18336"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/posts\/18336\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/media\/18329"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/media?parent=18336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/categories?post=18336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/it\/wp-json\/wp\/v2\/tags?post=18336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}