Je winkelwagen is leeg
Producten die je toevoegt, verschijnen hier.
Met de juiste configuratie kun je laadtijden drastisch verkorten, beveiliging verbeteren en je Core Web Vitals optimaliseren.
Wist je dat 53% van de mobiele bezoekers je site verlaat als deze langer dan 3 seconden laadt? Dus hoe zorg je ervoor dat jouw website razendsnelsnel én beter beveiligd is? Een van de krachtigste tools die je tot je beschikking hebt is het .htaccess bestand waarmee je met de juiste configuratie laadtijden drastisch kunt verkorten, beveiliging kunt verbeteren en je Core Web Vitals
KeurigOnline zegthtaccessEen .htaccess-bestand gebruik je voor geavanceerde serverinstellingen zoals redirects en beveiliging.
KeurigOnline zegtCore Web VitalsCore Web Vitals zijn Google's belangrijkste metrics voor website-ervaring en snelheid. kunt optimaliseren.
In dit artikel ontdek je 20 praktische .htaccess code snippets die je direct kunt toepassen. We beginnen met 7 custom configuraties die ik persoonlijk heb getest en geoptimaliseerd, gevolgd door 13 extra voorbeelden georganiseerd per categorie. Elk snippet komt met uitleg over hoe het werkt en waarom je het nodig hebt, dus laten we beginnen.
In deze lijst gaan we niet alleen de 20 voorbeelden bekijken maar duiken we ook in de technische werking en de concrete voordelen voor jouw website. We starten met 7 custom snippets die ik specifiek voor snelheid en veiligheid heb geoptimaliseerd, daarna volgen 13 andere voorbeelden per categorie.
Deze configuratie zorgt ervoor dat browsers statische bestanden lokaal opslaan waardoor terugkerende bezoekers je site razendsnelladen. Elke bestandstype krijgt een cache
KeurigOnline zegtCacheCache slaat tijdelijk gegevens op, waardoor je website sneller laadt.-duur die past bij de updatefrequentie.
<IfModule mod_expires.c>
ExpiresActive On
# Afbeeldingen - 1 jaar
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
# CSS en JavaScript - 1 maand
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
# Fonts - 1 jaar
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
# HTML - 1 uur
ExpiresByType text/html "access plus 1 hour"
</IfModule>
Deze configuratie gebruikt de volgende Apache
KeurigOnline zegtApacheApache is software die webpagina’s aan bezoekers toont. modules en technieken:
mod_expires: Apache module die Expires en Cache-Control headers toevoegtExpiresActive On: Activeert de expires functionaliteitExpiresByType: Stelt per MIME-type een specifieke cache-duur inWaarom dit werkt: Door verschillende cache
KeurigOnline zegtCacheCache slaat tijdelijk gegevens op, waardoor je website sneller laadt.-duren te gebruiken voor verschillende bestandstypes voorkom je dat browsers verouderde content tonen terwijl je wel maximaal profiteert van caching. Afbeeldingen wijzigen zelden dus krijgen 1 jaar cache terwijl HTML
KeurigOnline zegtHTMLHTML is de programmeertaal voor het maken van webpagina’s. vaker update en daarom 1 uur cache krijgt.
Comprimeer tekstbestanden voordat ze naar de browser worden gestuurd want dit verkleint de bestandsgrootte met gemiddeld 70% waardoor pagina's 3-5x sneller laden.
<IfModule mod_deflate.c>
# Compressie niveau 9 (hoogste)
DeflateCompressionLevel 9
# Comprimeer deze bestandstypes
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE image/svg+xml
# Geen compressie voor oude browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
Technische onderdelen:
mod_deflate: Apache module voor GZIP compressieDeflateCompressionLevel 9: Maximale compressie (1-9 schaal)AddOutputFilterByType DEFLATE: Past compressie toe per MIME-typeBrowserMatch: Detecteert browsers die geen GZIP ondersteunenImpact: Een typische WordPress
KeurigOnline zegtWordPressWordPress is een veelgebruikt CMS om eenvoudig websites en blogs mee te maken en beheren. site van 2MB wordt gecomprimeerd naar ~600KB en bij een 3G verbinding van 1.6 Mbps scheelt dit 5-6 seconden laadtijd.
Forceer HTTP
KeurigOnline zegtHTTPHTTP is het protocol waarmee webclients en -servers gestructureerd data uitwisselen via requests en responses.S-verbindingen en activeer HTTP Strict Transport Security want dit voorkomt man-in-the-middle aanvallen en verbetert je SEO-ranking.
<IfModule mod_rewrite.c>
RewriteEngine On
# HTTP naar HTTPS redirect
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# WWW naar non-WWW redirect (optioneel)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>
# HSTS header - forceer HTTPS voor 1 jaar
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
Kerncomponenten:
RewriteEngine On: Activeert Apache's URL rewrite moduleRewriteCond %{HTTPS} off: Controleert of verbinding HTTP is[R=301,L]: 301 permanent redirectStrict-Transport-Security: Instrueert browser om alleen HTTPS te gebruikenincludeSubDomains: HSTS geldt ook voor subdomeinenVoeg beveiligingsheaders toe die beschermen tegen cross-site scripting (XSS), clickjacking en MIME-type sniffing aanvallen.
<IfModule mod_headers.c>
# XSS Protection
Header set X-XSS-Protection "1; mode=block"
# Voorkom clickjacking
Header always set X-Frame-Options "SAMEORIGIN"
# MIME-type sniffing blokkeren
Header set X-Content-Type-Options "nosniff"
# Referrer policy
Header set Referrer-Policy "strict-origin-when-cross-origin"
# Content Security Policy (basis)
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
# Permissions Policy
Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
Beveiligingslagen:
X-XSS-Protection: Activeert browser's ingebouwde XSS filterX-Frame-Options SAMEORIGIN: Staat alleen iframes van eigen domein toeX-Content-Type-Options nosniff: Voorkomt MIME-type verwisselingContent-Security-Policy: Bepaalt welke resources geladen mogen wordenPermissions-Policy: Blokkeert toegang tot browser APIsResultaat: Score 100 op Internet.nl security test wat precies is wat je wilt voor een professionele website.
Bescherm je server resources door schadelijke bots, scrapers en spam-bots te blokkeren voordat ze je site belasten.
<IfModule mod_rewrite.c>
RewriteEngine On
# Blokkeer slechte user agents
RewriteCond %{HTTP_USER_AGENT} (MJ12bot|AhrefsBot|SemrushBot|DotBot|serpstatbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (BLEXBot|DataForSeoBot|PetalBot|proximic|ZoomBot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (wget|curl|libwww|python|nikto|scan|sqlmap) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(-|.{300,})$ [NC]
RewriteRule ^(.*)$ - [F,L]
# Blokkeer direct IP toegang (optioneel)
RewriteCond %{HTTP_HOST} ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Hoe dit werkt:
HTTP_USER_AGENT: Identificeert de browser of bot[NC]: Case-insensitive matching[OR]: Logische OR operator voor meerdere condities[F,L]: Return 403 Forbidden en stop processingLet op: Sommige SEO tools gebruiken deze bots dus blokkeer alleen bots die je niet nodig hebt voor analytics of SEO monitoring.
Schakel ETags uit om caching-problemen te voorkomen en de cache-hit ratio te verbeteren, vooral bij multi-server setups.
<IfModule mod_headers.c>
# Verwijder ETag headers
Header unset ETag
</IfModule>
# FileETag instelling
FileETag None
# Of gebruik alleen Mtime (laatste wijzigingstijd)
# FileETag MTime Size
Waarom ETags problematisch zijn:
FileETag None: Schakelt ETag generatie volledig uitCombinatie met Expires: Door ETags uit te schakelen en Expires headers te gebruiken (zie snippet 1) krijg je voorspelbaar cache-gedrag.
Voorkom dat andere websites jouw afbeeldingen direct embedden wat je bandbreedte opeet en server kosten verhoogt.
<IfModule mod_rewrite.c>
RewriteEngine On
# Sta eigen domein en zoekmachines toe
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?jouweigendomein\.nl [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\. [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?bing\. [NC]
# Blokkeer afbeeldingen, maar sta CSS/JS toe
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|png|gif|webp|svg)$ [NC]
# Optie 1: Blokkeer (403 Forbidden)
RewriteRule ^(.*)$ - [F,L]
# Optie 2: Redirect naar placeholder afbeelding (commentaar regel hierboven en gebruik deze)
# RewriteRule \.(jpg|jpeg|png|gif|webp)$ /images/hotlink-blocked.png [R,L]
</IfModule>
Technische onderdelen:
HTTP_REFERER: Controleert van welke website het verzoek komt[NC]: Case-insensitive matching voor flexibiliteitImpact: Hotlinking kan 20-40% van je bandbreedte kosten als je populaire afbeeldingen hebt en deze regel stopt dat direct.
Verberg je Apache versie en OS informatie uit HTTP headers om aanvallers minder informatie te geven over je server setup.
# Server signature uitschakelen
ServerSignature Off
# Server tokens minimaliseren
ServerTokens Prod
Technische uitleg:
ServerSignature Off: Verwijdert server info uit error pagesServerTokens Prod: Toont alleen "ApacheHoud TCP-verbindingen open voor meerdere requests waardoor latency drastisch vermindert bij multi-resource pages.
# KeepAlive activeren
<IfModule mod_headers.c>
Header set Connection "Keep-Alive"
</IfModule>
Waarom dit belangrijk is:
Let op: De KeepAliveTimeout waarde wordt meestal op server-niveau ingesteld en niet in .htaccess.
Instrueer browsers om afbeeldingen pas te laden wanneer ze in beeld komen zonder extra JavaScript
KeurigOnline zegtJavaScriptJavaScript is de browser- en server-scriptingtaal voor interactieve, asynchrone webapplicaties..
<IfModule mod_headers.c>
# Link preload hint voor critical images
<FilesMatch "\.(jpg|jpeg|png|webp)$">
Header set Link "</style.css>; rel=preload; as=style"
</FilesMatch>
</IfModule>
Opmerking. Native browser lazy loading
KeurigOnline zegtLazy loadingLazy loading laadt afbeeldingen en content pas wanneer ze in beeld komen.. Wordt via HTML
KeurigOnline zegtHTMLHTML is de programmeertaal voor het maken van webpagina’s. attribuut loading="lazy" gedaan. Niet via .htaccess. Deze snippet toont wel. Hoe je preload hints kunt instellen.
Forceer trailing slashes op directory URLs om duplicate content te voorkomen en SEO te verbeteren.
<IfModule mod_rewrite.c>
RewriteEngine On
# Voeg trailing slash toe aan directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]
</IfModule>
Techniek:
!-f: Pas alleen toe op directories, niet op bestandenVerhuizen naar een nieuw domein. Redirect al je traffic. Zonder SEO-waarde te verliezen.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?ouddomein\.nl$ [NC]
RewriteRule ^(.*)$ https://nieuwdomein.nl/$1 [R=301,L]
</IfModule>
Belangrijk:
$1 neemt het pad meeVerwijder tracking parameters en session IDs uit URLs voor betere leesbaarheid en consistente caching.
<IfModule mod_rewrite.c>
RewriteEngine On
# Verwijder specifieke tracking parameters
RewriteCond %{QUERY_STRING} ^(.*)&?(utm_source|utm_medium|utm_campaign|fbclid|gclid)=[^&]*(.*)$ [NC]
RewriteRule ^(.*)$ /$1?%1%3 [R=301,L]
</IfModule>
Use case:
Blokkeer of limiteer toegang tot xmlrpc.php want dit is een populair doelwit voor DDoS en brute force attacks.
KeurigOnline zegtPHPPHP is een programmeertaal waarmee dynamische websites en webapplicaties gebouwd worden.
<Files "xmlrpc.php">
# Optie 1: Volledig blokkeren
Require all denied
# Optie 2: Alleen specifieke IPs toestaan
# Require ip 123.45.67.89
# Require ip 98.76.54.32
</Files>
Waarom dit cruciaal is:
Require all denied: Apache 2.4 syntax voor volledige blokkeringLet op: Sommige plugins en mobile apps gebruiken XML
KeurigOnline zegtXMLXML is een opmaaktaal die gebruikt wordt om gestructureerde data uit te wisselen tussen systemen.-RPC dus test eerst voordat je volledig blokkeert.
Limiteer toegang tot /wp-admin tot vertrouwde IP-adressen voor een extra beveiligingslaag tegen hacking pogingen.
# Bescherm wp-login.php
<Files "wp-login.php">
Require ip 123.45.67.89
Require ip 98.76.54.32
</Files>
# Bescherm wp-admin directory (behalve admin-ajax.php voor AJAX calls)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-admin/admin-ajax\.php
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !^98\.76\.54\.32$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Technische details:
Require ip: Apache 2.4 directieve voor IP whitelistingREMOTE_ADDR: IP-adres van de client\. voor letterlijke punt in IPVoorkom dat bezoekers directory listings kunnen zien van /wp-content/uploads en andere mappen.
# Directory browsing uitschakelen
Options -Indexes
# Extra bescherming voor specifieke directories
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
Security impact:
Pas PHP settings aan via .htaccess voor betere WordPress
KeurigOnline zegtWordPressWordPress is een veelgebruikt CMS om eenvoudig websites en blogs mee te maken en beheren. performance en grotere uploads.
<IfModule mod_php8.c>
php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
</IfModule>
Settings uitleg:
memory_limit 256M: Meer geheugen voor zware plugins (WooCommerceupload_max_filesize 64M: Grotere afbeeldingen en media uploadspost_max_size 64M: Moet gelijk zijn aan upload limitmax_execution_time 300: 5 minuten voor imports/exportsLet op: Bij KeurigOnline kun je deze settings ook aanpassen via DirectAdmin
KeurigOnline zegtDirectAdminDirectAdmin is het betrouwbare en gebruiksvriendelijke controlepaneel waarmee je jouw webhosting eenvoudig beheert. PHP Selector voor persistente wijzigingen.
Forceer downloads voor PDF, ZIP
KeurigOnline zegtZIPZIP is een bestandsformaat voor het comprimeren van meerdere bestanden tot één kleiner archief. en andere bestanden in plaats van ze in de browser te openen.
<FilesMatch "\.(pdf|zip|tar|gz|doc|docx|xls|xlsx|ppt|pptx)$">
Header set Content-Disposition "attachment"
</FilesMatch>
Use cases:
Content-Disposition attachment: Instrueert browser om te downloadenRedirect gebruikers naar vriendelijke error pages in plaats van standaard Apache foutmeldingen.
# Custom error pages
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 502 /errors/502.html
ErrorDocument 503 /errors/503.html
# Of redirect naar een dynamische error handler
# ErrorDocument 404 /404.php
Error types uitgelegd:
SEO tip: Zorg dat je 404 pagina daadwerkelijk een 404 status code teruggeeft en geen 200 soft 404.
Stuur alle verkeer naar een maintenance pagina tijdens site updates behalve voor specifieke IP-adressen.
<IfModule mod_rewrite.c>
RewriteEngine On
# Except deze IP-adressen van maintenance mode
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !^98\.76\.54\.32$
# Except de maintenance pagina zelf
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REQUEST_URI} !^/maintenance-assets/
# Redirect naar maintenance page
RewriteRule ^(.*)$ /maintenance.html [R=503,L]
# Retry-After header voor zoekmachines
Header always set Retry-After "3600"
</IfModule>
Best practices:
SEO bescherming: 503 status voorkomt dat Google je pagina's uit de index verwijdert tijdens maintenance.
Na het implementeren van deze configuraties wil je natuurlijk testen of alles correct werkt dus hier zijn drie essentiële tools.
htaccess tester is een online validator die je .htaccess regels test voordat je ze live zet waarbij je je bestand upload en direct ziet of er syntax errors zijn.
De tool simuleert Apache
KeurigOnline zegtApacheApache is software die webpagina’s aan bezoekers toont. configuratie en toont welke redirects worden uitgevoerd voor specifieke URLs wat onmisbaar is voordat je wijzigingen doorvoert op een productie-omgeving.
Ideaal voor het testen van complexe RewriteRules zonder je live site te risico te stellen.
GTmetrix test je website snelheid en controleert of je caching headers correct zijn ingesteld waarbij het een waterfall chart
KeurigOnline zegtWaterfall chartEen waterfall chart visualiseert de laadvolgorde en timing van alle resources op je pagina. genereert die laat zien welke resources gecached worden.
De tool meet laadtijden, Time to First Byte (TTFB) en Core Web Vitals
KeurigOnline zegtCore Web VitalsCore Web Vitals zijn Google's belangrijkste metrics voor website-ervaring en snelheid. waardoor je direct feedback krijgt of je GZIP compressie en browser caching correct werken.
GTmetrix gebruikt Lighthouse
KeurigOnline zegtLighthouseLighthouse is Google's open-source tool voor het auditen van webpagina-kwaliteit. en geeft een performance score van 0-100 inclusief concrete suggesties voor verbetering.
Security Headers scant je website op security headers
KeurigOnline zegtSecurity HeadersHTTP-headers die je website extra beschermen. en geeft een rating van F tot A+ waarbij je hier kunt testen of je X-Frame-Options, CSP en HSTS
KeurigOnline zegtHSTSHSTS forceert browsers om alleen via HTTPS te verbinden met je website. correct zijn geconfigureerd.
De tool legt uit waarom elke header belangrijk is en wat de security risico's zijn als deze ontbreken wat perfecte validatie is voor snippet 4 over security headers.
Streef naar minimaal een A rating want dat is precies wat professionele websites hebben en wat Google beloont in rankings.
Met .htaccess optimalisaties kun je razendsnelle verbeteringen doorvoeren maar is dat ook zo?
Hoewel een goed geconfigureerd .htaccess bestand je website sneller, veiliger en professioneler maakt, is het belangrijk om voorzichtig te zijn want een fout in je configuratie kan je hele site platleggen. Test altijd eerst op een development omgeving, maak backups voordat je wijzigingen doorvoert en implementeer snippets één voor één.
Gebruik de 20 code snippets uit dit artikel als startpunt en pas ze aan voor jouw specifieke situatie. Begin met de must-haves zoals browser caching (1), GZIP compressie (2) en HTTPS redirect
KeurigOnline zegtRedirectEen redirect stuurt bezoekers automatisch door naar een andere webpagina. (3), voeg daarna security headers
KeurigOnline zegtSecurity HeadersHTTP-headers die je website extra beschermen. toe (4) en optimaliseer verder op basis van je monitoring data.
Bij KeurigOnline optimaliseren we hosting configuraties dagelijks waarbij onze LiteSpeed
KeurigOnline zegtLiteSpeedLiteSpeed is een snelle en efficiënte webserver die de prestaties van je website aanzienlijk verbetert.-servers met NVMe
KeurigOnline zegtNVMeNVMe is ultrasnelle SSD-opslag die websites tot 6x sneller maakt dan traditionele opslag.-opslag en HTTP
KeurigOnline zegtHTTPHTTP is het protocol waarmee webclients en -servers gestructureerd data uitwisselen via requests en responses./3 pure snelheid leveren en met de juiste .htaccess
KeurigOnline zegthtaccessEen .htaccess-bestand gebruik je voor geavanceerde serverinstellingen zoals redirects en beveiliging. configuratie haal je er nóg meer uit. Hulp nodig bij implementatie? Onze support uit Groningen staat klaar met 77% reactietijd onder 1 minuut.