Ga naar inhoud

.htaccess tips voor WordPress

.htaccess tips voor WordPress

Het .htaccess bestand is een krachtige tool voor je WordPress site. Met dit configuratiebestand stuur je je Apache webserver aan. Je kunt redirects instellen, caching optimaliseren en je site beveiligen.

In deze gids vind je praktische .htaccess tips speciaal voor WordPress. Van basis configuratie tot geavanceerde security regels.

Wat doet .htaccess?

Het .htaccess bestand configureert je Apache webserver op directory niveau. Het staat in de hoofdmap van je WordPress installatie. De naam begint met een punt waardoor het verborgen is op veel systemen.

Let op: .htaccess werkt alleen op Apache servers. Nginx gebruikt andere configuratie bestanden. Check bij je hosting provider welke webserver je gebruikt.

Mogelijkheden van .htaccess:

  • URL redirects en rewrites
  • Caching headers instellen
  • Compressie activeren
  • Toegang blokkeren
  • Error pagina's instellen
  • Performance optimalisaties

Een verkeerde .htaccess kan je hele site onbereikbaar maken. Maak altijd een backup voordat je wijzigingen maakt.

Standaard WordPress .htaccess

WordPress genereert automatisch een basis .htaccess bij installatie. Dit bestand zorgt voor permalink functionaliteit.

Standaard WordPress .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Deze regels zorgen dat mooie permalinks werken. WordPress schrijft dit automatisch als je permalinks instelt in admin.

Belangrijk: voeg custom regels toe boven of onder de WordPress sectie. Bewerk de regels tussen BEGIN en END WordPress niet handmatig want WordPress kan deze overschrijven.

Redirects instellen met .htaccess

Redirects stuur je bezoekers van oude naar nieuwe URLs. Dit is belangrijk voor SEO en gebruikerservaring.

301 redirect (permanent):

Redirect 301 /oude-pagina https://example.com/nieuwe-pagina

Van non-www naar www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

Van www naar non-www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

HTTP naar HTTPS forceren:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Voor meer over WordPress sneller maken en optimaliseren.

Caching headers voor betere performance

Browser caching laat bezoekers bestanden lokaal opslaan. Dit versnelt je site aanzienlijk bij terugkerende bezoekers.

Leverage browser caching:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>

Deze regels zeggen browsers hoe lang ze bestanden mogen cachen. Afbeeldingen 1 jaar, CSS en JS 1 maand.

Cache-Control headers:

<IfModule mod_headers.c>
<FilesMatch "\.(jpg|jpeg|png|gif|svg|css|js)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
</IfModule>

GZIP compressie activeren

GZIP compressie verkleint bestanden voor ze naar de browser gestuurd worden. Dit bespaart bandbreedte en versnelt laadtijden.

Basis GZIP compressie:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE text/plain
</IfModule>

Uitgebreide GZIP configuratie:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>

Test compressie op tools zoals GTmetrix of Google PageSpeed Insights.

Security regels voor WordPress

Met .htaccess kun je je WordPress site beter beveiligen tegen aanvallen.

wp-config.php beschermen:

<Files wp-config.php>
order allow,deny
deny from all
</Files>

XML-RPC uitschakelen: XML-RPC wordt vaak misbruikt voor brute force aanvallen:

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Directory browsing uitschakelen:

Options -Indexes

Toegang wp-admin beperken tot IP:

<Files wp-login.php>
order deny,allow
deny from all
allow from 123.123.123.123
</Files>

Vervang 123.123.123.123 door je eigen IP adres.

File injection voorkomen:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Voor meer tips check onze WordPress beveiliging gids.

Hotlinking blokkeren

Hotlinking is wanneer andere sites direct naar jouw afbeeldingen linken. Dit steelt je bandbreedte.

Afbeeldingen hotlinking blokkeren:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ - [F]

Vervang example.com door je eigen domein.

Met placeholder afbeelding:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://example.com/hotlink.jpg [R,L]

Nu zien hotlinkers een placeholder in plaats van je echte afbeelding.

Upload directory beschermen

De wp-content/uploads directory mag geen PHP bestanden uitvoeren. Dit voorkomt dat hackers malware uploaden via formulieren.

PHP uitvoering blokkeren in uploads:

<Directory "/var/www/html/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

Of met .htaccess in de uploads map zelf:

<Files *.php>
deny from all
</Files>

Custom error pagina's

Met .htaccess kun je eigen error pagina's instellen voor 404, 500 en andere errors.

Error pagina's instellen:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
ErrorDocument 500 /500.html

Of naar WordPress pagina's:

ErrorDocument 404 /index.php?error=404

Zorg dat je custom error pagina's bestaan voordat je deze activeert.

Performance optimalisaties

ETags uitschakelen: ETags kunnen caching problemen veroorzaken bij load balanced hosting:

<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None

KeepAlive optimaliseren:

<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>

Lazy loading forceren:

<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</IfModule>

Common errors en oplossingen

500 Internal Server Error: Dit komt vaak door syntax fouten in .htaccess. Check je Apache error logs:

tail -f /var/log/apache2/error.log

Of via hosting control panel. Verwijder recentelijk toegevoegde regels en test opnieuw.

Redirects werken niet: Check of mod_rewrite actief is. Sommige shared hosting heeft dit standaard uit. Vraag je provider dit te activeren.

Site laadt niet na .htaccess wijziging: Hernoem .htaccess naar .htaccess_old via FTP. Als je site nu werkt zat de fout in .htaccess.

Permanente redirect loop: Check of je niet meerdere conflicterende redirects hebt. Test met browser incognito mode.

.htaccess testen en debuggen

Syntax checker online: Gebruik tools zoals htaccess tester om syntax te valideren voor je upload.

Server configuratie checken: Sommige hosting providers hebben beperkingen op .htaccess. Check met phpinfo() welke modules actief zijn.

Redirects testen: Gebruik redirect checker tools om te verifiëren dat redirects correct werken en geen loops veroorzaken.

Nginx alternatieven

Als je server Nginx gebruikt werkt .htaccess niet. Configuratie gaat via nginx.conf of server blocks.

Nginx redirect voorbeeld:

location /oude-pagina {
    return 301 https://example.com/nieuwe-pagina;
}

Veel managed WordPress hosting providers gebruiken Nginx. Check je hosting documentatie voor configuratie opties.

Best practices voor .htaccess

Maak altijd een backup: voor je .htaccess aanpast download je een backup. Eén fout kan je site breken.

Test op staging: test wijzigingen eerst op een staging omgeving. Pas daarna op productie.

Commentaar toevoegen: gebruik # voor commentaar. Dit helpt later bij onderhoud.

Minimaal houden: voeg alleen regels toe die je echt nodig hebt. Meer regels is meer overhead.

Monitor performance: check na wijzigingen of je site sneller laadt. Gebruik tools zoals GTmetrix.

Security eerst: begin met security regels voordat je performance optimaliseert.

Complete .htaccess voorbeeld

Hier een complete .htaccess met alle belangrijke optimalisaties:

# Security
Options -Indexes
<Files wp-config.php>
order allow,deny
deny from all
</Files>

# HTTPS forceren
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# GZIP compressie
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

# Browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresDefault "access plus 2 days"
</IfModule>

# WordPress permalinks
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Door je .htaccess goed in te richten maak je je WordPress site sneller en veiliger. Kies de regels die passen bij jouw situatie. Test altijd eerst voordat je wijzigingen op productie toepast.

Meer informatie: WordPress.org documentatie

Veelgestelde vragen

Is WordPress gratis?

WordPress zelf is gratis open-source software. Je betaalt alleen voor hosting, een domeinnaam, en eventuele premium themes of plugins die je wilt gebruiken.

Hoe moeilijk is WordPress om te leren?

WordPress is relatief eenvoudig te leren. De basisfuncties kun je binnen een paar uur onder de knie krijgen. Voor geavanceerde aanpassingen is meer tijd nodig.

Kan ik WordPress later verhuizen naar een andere host?

Ja, WordPress websites kunnen worden verhuisd naar een andere hosting provider. De meeste providers bieden hiervoor gratis hulp aan.

Was dit artikel nuttig?

Vergelijk direct hosting pakketten om de beste keuze voor jouw situatie te maken.

Klaar om te kiezen?

Vergelijk hosting pakketten