Een HTML-export van je AI-design online zetten

Een HTML-export zet je online bij een statische host zoals Netlify, Cloudflare Pages of Vercel: map uploaden, domein koppelen via DNS, en HTTPS gaat daarna vanzelf aan. Wat de export niet heeft, voeg je zelf toe: een formulier dat via een dienst mailt, een sitemap voor Google en statistieken die pas laden na toestemming, of die zonder cookies werken. Laat bij het koppelen je MX-records staan, anders stopt je e-mail.

Damian Madronal Munoz, oprichter

6 min leestijd

Je hebt een map met een index.html uit Claude Design, Google Stitch of een andere AI-tool. Dat is genoeg voor een website, maar alleen het begin. Hieronder staan de stappen in de volgorde waarin je ze doet, met de instellingen erbij: hosting, je domein, HTTPS, een formulier dat aankomt, statistieken en Google.

Herken je dit?

  • Je hebt een map of een zip met HTML en weet niet waar die heen moet.
  • Je site staat op een adres als jouw-site.netlify.app in plaats van op je eigen domein.
  • Naast je adres staat in de browser “Niet veilig”.
  • Het formulier zegt bedankt, maar er komt geen mail binnen.
  • Je wilt weten hoeveel mensen je site bezoeken, zonder dat je zomaar cookies plaatst.

Een export is af als site, niet als website

Een HTML-export is een statische site: losse bestanden die de server ongewijzigd doorgeeft. Er draait geen PHP en geen database. Daardoor is hosting goedkoop, laadt de site snel en valt er weinig te patchen. Een PHP-lek raakt je niet, want er draait geen PHP. Het verschil met WordPress staat in statische website of WordPress.

Wat een export mist, is alles buiten de pagina. Een adres. Een certificaat voor HTTPS. Een plek waar een formulier zijn bericht afgeeft. Een manier om bezoekers te tellen. Die vier regel je bij de host en met een paar regels code.

Zo zet je hem online

1. Maak de map klaar

Zet index.html bovenin de map, niet in een submap. Gebruik in bestandsnamen kleine letters en geen spaties. Op je eigen computer werkt Logo.PNG ook als de HTML om logo.png vraagt, op de meeste servers niet. Zoek in de HTML naar http://: elke afbeelding of script via gewoon HTTP geeft straks een waarschuwing.

2. Kies een statische host

Drie diensten waar je de map direct in sleept:

  • Netlify Drop op app.netlify.com/drop. Je kunt uploaden zonder account en de site daarna claimen. Netlify kan ook je formulieren afhandelen, zie stap 5.
  • Cloudflare Pages, via Workers & Pages in het dashboard. Sleep een map of zip; tot 1.000 bestanden en 25 MiB per bestand.
  • Vercel Drop op vercel.com/drop, met een account. Voor een bedrijfssite heb je daar een betaald plan nodig.

Een nieuwe versie zet je online door de map opnieuw te uploaden naar hetzelfde project. Het adres blijft gelijk.

3. Koppel je domein

In het dashboard van je host voeg je je domein toe. De host toont dan welke DNS-records je bij je domeinregistrar zet. Meestal is dat een CNAME voor www en een A- of ALIAS-record voor het domein zonder www.

Type    Naam   Waarde
CNAME   www    jouw-site.netlify.app
A       @      het IP-adres dat je host opgeeft
MX      @      (niet aanraken: hier loopt je e-mail)
Voorbeeld van de records bij je registrar. De waarden geeft je host; de MX-records voor je mail blijven staan.

Zet de TTL van de records een dag van tevoren laag, bijvoorbeeld op 300 seconden. Dan is een fout binnen vijf minuten hersteld in plaats van binnen een dag.

4. Zet HTTPS aan

Wijst je domein naar de host, dan maakt die zelf een certificaat aan. Dat duurt meestal minuten. Zet daarna de optie aan die elk bezoek via HTTP doorstuurt naar HTTPS. Krijg je toch “Niet veilig” te zien, open dan de console van je browser: daar staat welk bestand nog via HTTP laadt.

5. Laat het formulier echt mailen

Een formulier uit een export stuurt zijn gegevens nergens heen. Je kiest een van drie routes. Host je bij Netlify, dan zet je twee attributen op het formulier en schakel je in het dashboard formulierdetectie en een melding per mail in.

<form name="contact" method="POST" data-netlify="true" netlify-honeypot="faxnummer">
  <p hidden><label>Niet invullen <input name="faxnummer"></label></p>
  <label>Naam <input name="naam" autocomplete="name" required></label>
  <label>E-mail <input type="email" name="email" autocomplete="email" required></label>
  <label>Bericht <textarea name="bericht" required></textarea></label>
  <button type="submit">Versturen</button>
</form>
Een contactformulier voor Netlify Forms, met een verborgen veld dat bots invullen en mensen niet.

Bij Cloudflare of Vercel gebruik je een formulierdienst: je zet het adres van die dienst in het action-attribuut en zij mailen het bericht door. De derde route is een eigen serverfunctie die via je mailprovider verstuurt. Welke je ook kiest: stuur na de livegang een echte aanvraag en kijk ook in je spammap. Een formulier verzamelt persoonsgegevens, dus noem in je privacyverklaring waar de berichten terechtkomen. Waar je op let bij diensten buiten de EU, staat in AI-tools, de AVG en hosting.

6. Meet bezoekers, met of zonder cookies

Er zijn twee routes. Je meet zonder cookies, met een dienst die geen bezoekers volgt, zoals Cloudflare Web Analytics of Plausible. Of je gebruikt Google Analytics en laadt het pas na toestemming. De Autoriteit Persoonsgegevens legt op haar pagina over cookies uit wanneer statistieken zonder toestemming mogen: als ze geen of weinig gevolgen hebben voor de privacy. Of jouw opzet daaronder valt, beoordeelt een jurist.

Kies je voor toestemming, laad het script dan niet in de head. Laad het pas als iemand op Akkoord klikt, en maak Weigeren net zo makkelijk. Zo werkt het op deze site ook.

<script>
  function laadAnalytics() {
    var s = document.createElement('script');
    s.src = 'https://www.googletagmanager.com/gtag/js?id=G-JOUWCODE';
    s.async = true;
    document.head.appendChild(s);
    window.dataLayer = window.dataLayer || [];
    window.gtag = function () { dataLayer.push(arguments); };
    gtag('js', new Date());
    gtag('config', 'G-JOUWCODE');
  }
  if (localStorage.getItem('statistieken') === 'ja') laadAnalytics();
</script>
<button onclick="localStorage.setItem('statistieken', 'ja'); laadAnalytics()">Akkoord</button>
<button onclick="localStorage.setItem('statistieken', 'nee')">Weigeren</button>
Google Analytics laadt pas na een klik op Akkoord, en bij een volgend bezoek alleen als die keuze bewaard is.

7. Vertel Google dat je er bent

Zet een robots.txt en een sitemap.xml in de map, naast index.html. Voeg je domein toe in Search Console en dien daar de sitemap in. Geef elke pagina een eigen titel en beschrijving in de head.

# robots.txt
User-agent: *
Allow: /
Sitemap: https://www.jouwdomein.nl/sitemap.xml

<!-- sitemap.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://www.jouwdomein.nl/</loc></url>
  <url><loc>https://www.jouwdomein.nl/contact.html</loc></url>
</urlset>
robots.txt laat alles toe en wijst naar de sitemap; de sitemap noemt elke pagina.

Veelgemaakte fouten

  1. De nameservers omzetten en de MX-records vergeten. De site staat live, maar je mail komt niet meer aan. Kopieer bij een verhuizing van je DNS eerst alle bestaande records.
  2. Testen op het tijdelijke adres. Op jouw-site.netlify.app werkt alles. Op je eigen domein kan HTTPS nog ontbreken of verwijst een link naar het oude adres. Test op het adres dat je klanten zien.
  3. Het formulier alleen in de preview proberen. Daar verstuurt het niets. Pas op de live site weet je of de mail aankomt.
  4. De cookiemelding tonen terwijl het script al geladen is. De melding staat er, maar Google Analytics draaide al bij het openen van de pagina. Controleer in het netwerktabblad van je browser dat er niets naar Google gaat voor je op Akkoord klikt.
  5. Elke pagina dezelfde titel geven. Een export heeft vaak één titel voor alles. Dan weet Google niet welke pagina waarover gaat.

Wanneer je hulp nodig hebt

Heeft je site meer pagina’s, moeten teksten aangepast kunnen worden zonder HTML, of wil je dat iemand anders de hosting bijhoudt, dan bouwen wij het om: AI-design omzetten naar een echte website. Staat de site online en vindt Google hem niet, lees dan AI-website niet gevonden in Google. Wil je je domein en hosting bij ons onderbrengen, dan is hosting en domein overzetten gratis bij een beheercontract. Meer gidsen staan bij van AI-design naar een echte website.

Veelgestelde vragen⁠

Wat kost hosting voor een HTML-export?

Voor één statische pagina weinig tot niets: Netlify, Cloudflare en Vercel hebben gratis plannen. Lees wel de voorwaarden. Het gratis Hobby-plan van Vercel is volgens Vercel alleen voor persoonlijk, niet-commercieel gebruik, en een bedrijfssite valt daar niet onder. Je domeinnaam betaal je apart.

Kan ik mijn e-mail bij mijn huidige provider houden?

Ja. E-mail loopt via de MX-records van je domein, de website via andere records. Pas alleen de records voor de website aan en laat de MX-records staan.

Heb ik een cookiemelding nodig?

Dat hangt af van wat je meet en hoe. Statistieken die geen of weinig gevolgen hebben voor de privacy, mogen volgens de Autoriteit Persoonsgegevens zonder toestemming. Of jouw opzet daaronder valt, beoordeelt een jurist. Twijfel je, vraag dan toestemming.

Hoe pas ik later iets aan?

Pas de HTML aan, of maak een nieuwe export, en upload de map opnieuw naar hetzelfde project. Het adres blijft hetzelfde. Wil je teksten aanpassen zonder HTML, lees dan zelf teksten aanpassen in je AI-website.

Verder lezen⁠

Een ontwerp uit Claude Design, Stitch of Figma Make dat een echte website moet worden, en dat er niet als AI uit mag zien.

Wij zetten je export op je eigen domein⁠

De kennismaking is gratis. We reageren binnen één werkdag.