{"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":"serverzijde-omvat-ssi-hosting-configuratie-serverflex","status":"publish","type":"post","link":"https:\/\/webhosting.de\/nl\/server-side-includes-ssi-hosting-config-serverflex\/","title":{"rendered":"De server omvat: SSI Hosting en webserverconfiguratie"},"content":{"rendered":"<p><strong>SSI Hosting<\/strong> integreert server side includes direct in statische HTML bestanden en levert zo afgewerkte HTML code zonder afhankelijkheden aan de client kant. Ik laat je zien hoe je SSI activeert, typische directives gebruikt en de <strong>webserver configuratie<\/strong> op Apache schoon.<\/p>\n\n<h2>Centrale punten<\/h2>\n<p><strong>SSI<\/strong> maakt terugkerende paginaonderdelen onderhoudbaar en versnelt de levering als de webserver correct is geconfigureerd.<\/p>\n<ul>\n  <li><strong>Inclusief<\/strong> Bundel header, footer, navigatie.<\/li>\n  <li><strong>.htaccess<\/strong> Maakt parsing voor .html en .shtml mogelijk.<\/li>\n  <li><strong>Beveiliging<\/strong> door middel van beperkende rechten en NOEXEC.<\/li>\n  <li><strong>Prestaties<\/strong> voordelen van caching en NVMe.<\/li>\n  <li><strong>Compatibiliteit<\/strong> met Apache en gedeelde hosting.<\/li>\n<\/ul>\n<p>Met slechts een paar richtlijnen kun je modulaire pagina's bouwen en het onderhoudswerk aanzienlijk verminderen zonder dat je een CMS hoeft te gebruiken. In deze gids vertrouw ik op duidelijke voorbeelden, solide <strong>Praktijk<\/strong> en betrouwbare configuraties voor snelle resultaten.<\/p>\n\n<h2>Wat zijn Server Side Includes (SSI)?<\/h2>\n<p><strong>De server bevat<\/strong> zijn instructies in de HTML die de webserver interpreteert voor levering. De code staat in commentaar zoals <code><!--#include virtual=\"\/includes\/header.html\" --><\/code> en eindigt als voltooide markup in de browser. Dit bespaart je JavaScript-logica voor herhaalde blokken en geeft je schone, indexeerbare inhoud. De syntaxis begint altijd met <code>&lt;!--#<\/code>, gebruikt kleine letters en heeft aanhalingstekens nodig om de parser correct te laten werken. Ik houd de commando's minimaal zodat de overhead laag blijft en de <strong>Onderhoud<\/strong> blijft duidelijk.<\/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>Vereisten en webserverconfiguratie<\/h2>\n<p><strong>Apache<\/strong> de module <code>mod_include<\/code> moet actief zijn om SSI te laten werken. Veel hosts parseren alleen <code>.shtml<\/code>; met een geschikte <code>.htaccess<\/code> activeer je ook parsing voor <code>.html<\/code>. Controleer ook of uw pakket <code>AllowOverride<\/code> is toegestaan voor je map, anders zal het bestand niet werken. Om de juiste stack te kiezen, is het de moeite waard om te kijken naar <a href=\"https:\/\/webhosting.de\/nl\/webserver-vergelijking-apache-nginx-litespeed-perfopt-serverboost\/\">Apache, Nginx of LiteSpeed<\/a>, omdat SSI aan de serverkant is gebaseerd op Apache. Ik let op de <strong>Configuratie<\/strong> altijd veiligheid, prestaties en toekomstige schaalbaarheid.<\/p>\n\n<h2>Granulaire Apache-configuratie zonder .htaccess<\/h2>\n<p><strong>Beste werkwijze<\/strong> in je eigen serveromgeving: SSI centraal inschakelen in de vHost of in de Apache-configuratie en <code>AllowOverride Geen<\/code> gebruiken. Dit bespaart je het inlezen van de <code>.htaccess<\/code> en controle behouden over toegestane opties.<\/p>\n<pre><code>Servernaam example.org\n  DocumentRoot \/var\/www\/voorbeeld\/public_html\n\n  \n    Opties +IncludesNOEXEC\n    ToestaanOverride Geen\n    Alles toestaan\n    AddOutputFilter INCLUDES .html\n    # Optioneel: Parseer alleen geselecteerde bestanden\n    \n      Opties +IncludesNOEXEC\n      AddOutputFilter INCLUDES .html\n    \n  \n\n  # Alternatief, selectieve activering: XBitHack (zie hieronder)\n  # XBitHack volledig\n<\/code><\/pre>\n<p>In gedeelde hostingomgevingen blijft u met <code>.htaccess<\/code>, op mijn eigen servers, maar ik geef er de voorkeur aan om de configuratie gebundeld te houden in de vHost.<\/p>\n\n<h2>Stap voor stap instellen<\/h2>\n<p><strong>Voorbereiding<\/strong> begint in de document master, meestal <code>publieke_html<\/code>. Een map maken <code>\/includes\/<\/code> en schrijf daar uw <code>kop.html<\/code> en <code>voettekst.html<\/code> en gebruik absolute paden in de directives. Maak dan de <code>.htaccess<\/code> in de root en voer de volgende regels in zodat Apache HTML-bestanden op SSI parseert:<\/p>\n<pre><code>AddType tekst\/html .html\nAddOutputFilter INCLUDES .html\nOpties +Includes\nAddHandler server-parsed .html\n<\/code><\/pre>\n<p>Nu kun je blokken integreren in elke pagina, bijv. <code><!--#include virtual=\"\/includes\/header.html\" --><\/code>. Ik wis dan altijd caches in de browser en server-side caches om wijzigingen veilig op te slaan. <strong>kijk op<\/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>Gebruik include virtueel vs. include bestand correct<\/h2>\n<p><strong>Keuze<\/strong> van de variant bepaalt de flexibiliteit en toegangsbeveiliging:<\/p>\n<ul>\n  <li><strong>virtuele omvatten<\/strong> gebruikt URL-paden (bijv. <code>\/includes\/header.html<\/code>), doorloopt daarom herschrijvingen, toegangsregels en kan absolute paden netjes oplossen. Geschikt als fragmenten zichtbaar kunnen zijn op het web of als je bewust via de URL-ruimte werkt.<\/li>\n  <li><strong>includebestand<\/strong> leest rechtstreeks van het bestandssysteem en is <em>Relatief<\/em> naar het huidige bestand (zonder leidende schuine streep). Het negeert URL-herschrijvingen en is ideaal voor <em>intern<\/em> Fragmenten die niet direct toegankelijk mogen zijn. Gebruik unieke bestandsnamen zoals <code>header.inc.html<\/code> en plaats deze in een subdirectory van de pagina, bijvoorbeeld <code>omvat_priv\/<\/code>.<\/li>\n<\/ul>\n<p>Een typisch patroon voor priv\u00e9fragmenten:<\/p>\n<pre><code># In de submap \/includes_priv\/ van het project:\n# .htaccess (toegang extern blokkeren)\nAlle geweigerde\n<\/code><\/pre>\n<pre><code><!-- In de pagina (bijv. index.html, dezelfde hoofdmap) -->\n<!--#include file=\"includes_priv\/header.inc.html\" -->\n<!--#include bestand=\"includes_priv\/footer.inc.html\" -->\n<\/code><\/pre>\n<p>De browser kan de bestanden niet ophalen, maar SSI blijft ze lokaal lezen. Ik vermijd geneste paden en houd <code>bestand<\/code>-De referenties moeten zo plat mogelijk zijn, zodat het project duidelijk blijft.<\/p>\n\n<h2>Beveiliging en autorisaties bij SSI<\/h2>\n<p><strong>Beveiliging<\/strong> begint met rechten: Stel bestanden in op <code>644<\/code> en mappen op <code>755<\/code>, om onbedoeld vrijkomen te voorkomen. Vermijd <code>#exec<\/code> consequent, omdat uitvoeringsrechten de deur openzetten voor infiltratie. In gedeelde omgevingen gebruik ik <code>Opties +IncludesNOEXEC<\/code>, om scriptaanroepen uit te sluiten. Gevoelige bestanden zoals <code>.env<\/code> of configuraties worden vergrendeld met een extra <code>.htaccess<\/code> in de map. Dit vermindert het risico aanzienlijk en behoudt de <strong>Controle<\/strong> via ge\u00efntegreerde inhoud.<\/p>\n\n<h2>Verharding: Scope, headers en schone grenzen<\/h2>\n<p><strong>Reikwijdte<\/strong> Houd het strak: Sta SSI alleen toe waar het nodig is. In grote projecten beperk ik parsing met <code>FilesMatch<\/code> naar specifieke patronen, bijv. <code>*.inc.html<\/code> of <code>*.shtml<\/code>. Daarnaast stel ik de beveiligingsheaders globaal in, omdat afgewerkte HTML-uitvoer hier direct van profiteert:<\/p>\n<pre><code>Header ingesteld X-Content-Type-Options \"nosniff\".\n  Header ingesteld op X-Frame-Options \"SAMEORIGIN\".\n  Header set Referrer-Policy \"strict-origin-when-cross-origin\".\n  Header ingesteld op inhoud-beveiligingsbeleid \"default-src 'self'\".\n<\/code><\/pre>\n<p>Ik scheid openbaar toegankelijke fragmenten (bijv. voetteksten) en interne elementen (bijv. variabele bestanden) netjes, zodat regels duidelijk blijven en audits snel kunnen worden uitgevoerd.<\/p>\n\n<h2>Praktische SSI-voorbeelden voor projecten<\/h2>\n<p><strong>Voorbeeld<\/strong> 1: Een globale header. Plaats <code>\/includes\/header.html<\/code> en bind het met <code><!--#include virtual=\"\/includes\/header.html\" --><\/code> op elke pagina. Voorbeeld 2: Een voettekst met copyrightvermelding via <code><!--#include virtual=\"\/includes\/footer.html\" -->.<\/code>. Voorbeeld 3: Een datumstempel boven <code><!--#echo var=\"DATE_LOCAL\" --><\/code> in de zijbalk. Voorbeeld 4: Laatste wijziging in een bestand met <code><!--#flastmod bestand=\"\/pad\/bestand.html\" -->.<\/code> voor transparante actualiteit. Ik houd de paden consistent absoluut zodat de integratie in verschillende directorydieptes betrouwbaar is. <strong>werkt<\/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>Variabelen, opmaak en eenvoudige logica (XSSI)<\/h2>\n<p><strong>richtlijnen<\/strong> zoals <code>stel  in<\/code>, <code>echo<\/code>, <code>config<\/code> en <code>als<\/code> zijn voldoende voor veel gevallen zonder in toepassingslogica te vervallen.<\/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;\nBouwen: &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;Live hint:&lt;\/strong&gt; Productieve omgeving&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>Ik houd de logica plat, vermijd nesten en documenteer variabelen op \u00e9\u00e9n plaats (bijv. <code>bevat_priv\/vars.inc.html<\/code>), die ik ontving via <code>bestand<\/code> op elke pagina.<\/p>\n\n<h2>Prestaties, caching en CDN met SSI<\/h2>\n<p><strong>Prestaties<\/strong> profiteert van SSI omdat de server voltooide HTML-code uitvoert en de browser minder werk hoeft te doen. Ik vul dit aan met bestandscompressie via <code>mod_deflate<\/code> of <code>mod_brotli<\/code>, zodat de transmissies klein blijven. Server-side caching op proxy of app accelerator niveau kan HTML resultaten extra bufferen. Een CDN helpt bij wereldwijde distributie, terwijl SSI-parsing op de origin server blijft plaatsvinden. De juiste volgorde blijft belangrijk: eerst renderen omvat, dan de voltooide opmaak in de cache <strong>houd<\/strong>.<\/p>\n\n<h2>Cache-header, ETag en gerichte parsing<\/h2>\n<p><strong>Kop<\/strong> bepalen hoe browsers en proxy's resultaten hergebruiken. Voor dynamische fragmenten gebruik ik gematigde max-age waarden en sta ik stale caching toe:<\/p>\n<pre><code>Header ingesteld Cache-Control \"public, max-age=600, stale-while-revalidate=30\"\n  Header niet ingesteld Pragma\n\n# Standaardiseer of deactiveer ETags om inconsistenties te voorkomen\nBestandETag MTijd Grootte\n<\/code><\/pre>\n<p>Als u niet alle <code>.html<\/code> parsing, maar alleen specifieke bestanden, bespaart u bronnen. Twee manieren hebben zichzelf bewezen:<\/p>\n<ul>\n  <li><strong>FilesMatch-benadering:<\/strong> Alleen <code>*.inc.html<\/code> en parseer deze fragmenten per <code>virtueel<\/code> of <code>bestand<\/code> integreren.<\/li>\n  <li><strong>XBitHack:<\/strong> Met <code>XBitHack volledig<\/code> alleen bestanden met de uitvoeringsbit aan worden geparseerd. Daarnaast stelt Apache de <em>Laatst gewijzigd<\/em>-kop gebaseerd op de tijdstempel van het bestand, wat validatie vereenvoudigt.<\/li>\n<\/ul>\n<pre><code># selectief parsen via XBitHack\nXBitHack volledig\n# \"markeer\" bestand met chmod +x\n# chmod +x index.html\n<\/code><\/pre>\n<p>Na het aanbrengen van wijzigingen test ik altijd of <em>Laatst gewijzigd<\/em> en het cachegedrag gedragen zich zoals verwacht, zodat gebruikers nieuwe inhoud zien zonder hard te hoeven herladen.<\/p>\n\n<h2>SSI vs. PHP en CMS<\/h2>\n<p><strong>Vergelijking<\/strong> blijkt als volgt: SSI is geschikt voor modulaire, statische pagina's met een paar dynamische toevoegingen. PHP biedt applicatielogica, formulieren of databasetoegang, maar vergt meer onderhoud. Een CMS biedt redactionele functies, maar kost middelen en vereist regelmatige updates. Voor landingspagina's, documentatie en kleine websites met terugkerende modules beschouw ik SSI als de slanke oplossing. Voordat ik een beslissing neem, controleer ik de inhoud en de mix van <a href=\"https:\/\/webhosting.de\/nl\/statische-vs-dynamische-paginas-gids-webprojekt-hub\/\">statische en dynamische pagina's<\/a>, zodat de architectuur overeenkomt met het doel en gemakkelijk te <strong>Schaalbaar<\/strong> overblijfselen.<\/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>Migratiepad en hybride benaderingen<\/h2>\n<p><strong>Pragmatisch<\/strong> switch: Begin met header\/footer als includes, voeg navigatie en terugkerende teasers toe en laat speciale logica in PHP of uw CMS. Op deze manier kunt u duplicaties in templates geleidelijk verminderen zonder redactionele processen te verstoren. Voor volledig statische gebieden (bijv. documentatie) kunt u SSI-first gaan en dynamische eilanden (formulieren, zoeken) via onafhankelijke eindpunten insluiten. Ik houd het overzichtelijk zodat elke laag precies doet waarvoor hij is gemaakt.<\/p>\n\n<h2>Hosting selectie voor SSI projecten<\/h2>\n<p><strong>Selectie<\/strong> hangt af van de beschikbaarheid van Apache, <code>mod_include<\/code>, <code>AllowOverride<\/code> en snelle NVMe-opslag. Ik let op gratis <code>.htaccess<\/code>-gebruiken, zodat ik includes kan gebruiken voor <code>.html<\/code> kan worden geactiveerd. Plannen met voldoende CPU-klok bieden korte responstijden, wat SSI nog aantrekkelijker maakt. Overstapopties zonder migratie maken upgrades eenvoudiger als je project groeit. De volgende tabel toont typische kenmerken van plannen die SSI goed uitvoert <strong>ondersteuning<\/strong>.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Tarief<\/th>\n      <th>Prijs\/maand<\/th>\n      <th>Geheugen<\/th>\n      <th>WordPress pagina's<\/th>\n      <th>Geschikt voor SSI<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Starter<\/td>\n      <td>10 \u20ac<\/td>\n      <td>10 GB NVMe<\/td>\n      <td>1<\/td>\n      <td>Ja (Apache)<\/td>\n    <\/tr>\n    <tr>\n      <td>Per<\/td>\n      <td>47,60 \u20ac<\/td>\n      <td>75 GB NVMe<\/td>\n      <td>5<\/td>\n      <td>Ja (Apache)<\/td>\n    <\/tr>\n    <tr>\n      <td>Zakelijk<\/td>\n      <td>95,20 \u20ac<\/td>\n      <td>150 GB NVMe<\/td>\n      <td>10<\/td>\n      <td>Ja (Apache)<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n<p>Ik plan de bronnen niet te strak zodat caches werken en er reserves overblijven. Als je later PHP of CMS toevoegt, profiteer je van ruimte in RAM en CPU zonder dat je de cache hoeft te overbelasten. <strong>Stabiliteit<\/strong> risico.<\/p>\n\n<h2>Storingsdiagnose en probleemoplossing<\/h2>\n<p><strong>Problemen<\/strong> verschijnen vaak als \u201eonbewerkt\u201c SSI-commentaar in de HTML-broncode. In dit geval parseert de server het bestand niet en mist meestal <code>AddOutputFilter INCLUDES .html<\/code> of het MIME-type onjuist is. Controleer ook of het bestand is opgeslagen als <code>text\/html<\/code> en geen aanhalingstekens tussen redacteurs. Absolute paden voorkomen <code>..\/<\/code>-verwijzingen leveren niets op. Ik kijk als laatste naar de serverlogs, omdat daar de concrete aanwijzingen staan die me snel naar de <strong>Oorzaak<\/strong> Lood.<\/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>Probleemoplossing voor gevorderden: typische valkuilen<\/h2>\n<p><strong>500 Interne serverfout<\/strong> naar <code>Opties +Inclusief<\/code> in <code>.htaccess<\/code> geeft vaak aan <em>AllowOverride<\/em>-beperkingen. Oplossing: Laat de optie aan de serverkant instellen of vraag de hoster om goedkeuring. <strong>403 Verboden<\/strong> op <code>virtuele omvatten<\/code> duidt op toegangsbeperkingen in de doelmap; in zulke gevallen is het beter om <code>includebestand<\/code> en blokkeer de brondirectory voor HTTP-toegang. <strong>Karakterset- of BOM-problemen<\/strong> (onzichtbare tekens aan het begin van het bestand) kan leiden tot vreemde uitvoer - sla fragmenten op als UTF-8 zonder BOM. Als je ongewone witruimtes tegenkomt in geminificeerde code, controleer dan of je bouwproces commentaar\/SSI-richtlijnen verwijdert. Voor debug-sessies activeer ik tijdelijk <code><!--#printenv --><\/code>, om headers en variabelen te inspecteren en vervolgens weer te deactiveren.<\/p>\n\n<h2>Omgekeerde proxy en moderne opstellingen<\/h2>\n<p><strong>Architecturen<\/strong> Met een upstream proxy zoals Nginx of Traefik kan Apache op de achtergrond renderen. De proxy zorgt voor TLS, caching en compressie, terwijl Apache includes parst en afgewerkte HTML aflevert. Hierdoor kun je lage latency combineren met de flexibiliteit van SSI. Lees het overzicht van <a href=\"https:\/\/webhosting.de\/nl\/reverse-proxy-opstellingen-webhosting-architectuur-proxyhosting\/\">Omgekeerde proxy-opstellingen<\/a>, voordat je je routing plant. Ik begin graag met een eenvoudige ketting en breid die stap voor stap uit, zodat ik de effecten duidelijk kan meten en kan bepalen wat het beste werkt. <strong>Prestaties<\/strong> op een gerichte manier.<\/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>Compatibiliteit en bedrijfsmodi<\/h2>\n<p><strong>Compatibiliteit<\/strong>Apache is het doelsysteem voor het SSI-gebruik dat hier wordt beschreven. Veel hosters gebruiken LiteSpeed als vervanging voor Apache; de gebruikelijke SSI syntaxis wordt meestal ondersteund. Nginx heeft zijn eigen SSI functies met een andere syntax; in gemengde omgevingen voert Nginx meestal proxy taken uit, terwijl Apache SSI parsing afhandelt. Met Apache MPM geef ik de voorkeur aan <strong>evenement<\/strong> voor statische\/SSI sites (in combinatie met PHP-FPM), omdat het verbindingen effici\u00ebnter houdt. Ik gebruik Prefork alleen waar legacy modules het nodig maken.<\/p>\n\n<h2>Uitrol, versiebeheer en kwaliteitsborging<\/h2>\n<p><strong>Proces<\/strong> schoon houden: Fragmenten en variabele bestanden horen thuis in versiebeheer. Ik definieer standaarden (bestandsextensies zoals <code>.inc.html<\/code>, Directory-structuur <code>\/includes\/<\/code> en <code>\/includes_priv\/<\/code>) en controleer bij elke commit of includes opgelost kunnen worden. Een kleine CI stap kan een staging build uploaden, caches leegmaken en een gezondheidspagina met test includes ophalen. Een minimale test is snel gebouwd:<\/p>\n<pre><code>&lt;!-- test.shtml --&gt;\n&lt;!--#config timefmt=&quot;%Y-%m-%d %H:%M:%S&quot; --&gt;\nServer tijd: &lt;!--#echo var=&quot;DATE_LOCAL&quot; --&gt;&lt;br&gt;\nURI: &lt;!--#echo var=&quot;DOCUMENT_URI&quot; --&gt;&lt;br&gt;\nOmvatten: &lt;!--#include virtual=&quot;\/includes\/header.html&quot; --&gt;\n<\/code><\/pre>\n<p>Als deze pagina mislukt, zit het probleem bijna altijd in de basisconfiguratie (parsing, rechten of paden). Ik heb een kleine checklist klaar zodat je rollbacks in enkele minuten kunt uitvoeren.<\/p>\n\n<h2>Compacte tips voor schone SSI<\/h2>\n<p><strong>Paden<\/strong> Ik stel absoluut, dus <code>\/includes\/header.html<\/code> in plaats van relatieve verwijzingen, zodat bindingen in submappen stabiel blijven. Ik gebruik variabelen spaarzaam en geef ze een duidelijke naam, bijvoorbeeld <code>site_env<\/code> of <code>bouwdatum<\/code>. Ik test wijzigingen in een staging-omgeving en kopieer daarna pas live om downtime te voorkomen. Voordat u wijzigingen aanbrengt in de <code>.htaccess<\/code> Ik sla de huidige versie op, zodat ik deze indien nodig direct kan terugdraaien. Na implementaties wis ik browser- en servercaches zodat gebruikers de nieuwe versie zonder oude artefacten kunnen gebruiken. <strong>Zie<\/strong>.<\/p>\n\n<h2>Gericht gebruik van uitgebreide SSI-functies<\/h2>\n<p><strong>XSSI<\/strong> biedt eenvoudige voorwaarden en variabele logica, maar blijft opzettelijk beperkt om het parsen licht te houden. Typische gevallen zijn verschillende banners per map of een hint per taalversie. Je structureert voorwaarden met <code><!--#if expr=\"...\" --><\/code> en sluit het af met <code><!--#endif --><\/code>. Voor computationele logica kun je beter overschakelen naar PHP of de uitvoer van tevoren in je buildproces inbouwen. Ik vermijd geneste directives zodat de pagina leesbaar blijft en de <strong>Debuggen op<\/strong> snel.<\/p>\n\n<h2>Samenvatting in platte tekst<\/h2>\n<p><strong>Onder de streep<\/strong> SSI levert snelle, onderhoudbare pagina's door terugkerende inhoud samen te voegen voordat deze wordt verzonden. Met slechts een paar regels in de <code>.htaccess<\/code> activeer je parsing voor <code>.html<\/code> en houd de structuur van je project slank. Je kunt veiligheid bereiken met beperkende rechten en door geen gebruik te maken van <code>#exec<\/code>; beschermt in gedeelde omgevingen <code>InclusiefNOEXEC<\/code>. NVMe-opslag, schone caching en, indien nodig, een upstream proxy zorgen voor snelheid. Als ik modulair wil bouwen en het zonder overhead wil doen, vertrouw ik op SSI-hosting, beveilig ik de webserverconfiguratie netjes en onderhoud ik die jarenlang. <strong>eenvoudig<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Server Side Includes (SSI) in hosting: configuratie, voordelen en beste **SSI hosting** providers. Optimaliseer uw site met 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":"708","_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\/nl\/wp-json\/wp\/v2\/posts\/18336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/comments?post=18336"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/posts\/18336\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/media\/18329"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/media?parent=18336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/categories?post=18336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/nl\/wp-json\/wp\/v2\/tags?post=18336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}