We plaatsen een cookie voor Google Analytics om onze website te verbeteren

Met een cookie kun je advertenties personaliseren. Wij hanteren echter de strikte regels van de Autoriteit Persoonsgegevens. Surfgedrag houden we niet bij en we achtervolgen je ook niet met reclame.

Met .htaccess grip op je websiteverkeer!

Heb je een website, dan wil je natuurlijk graag bezoekers. Je hebt immers een verhaal te vertellen, kennis te delen of iets te verkopen. Alleen, niet al het verkeer is even waardevol. Richt jij je vooral op de Benelux, dan kun je besluiten je website enkel daarvoor toegankelijk te maken. Dit kan met behulp van het .htaccess-bestand en GeoIP. Lees snel hoe!

Met .htaccess grip op je websiteverkeer!

Bij ongewenst verkeer kun je denken aan doelbewuste aanvallen op je site. Dit gebeurt veelal vanaf een specifiek IP-adres uit een bepaald land. Het doel is vaak om zoveel aanvragen te doen, dat je website overbelast raakt. Dat kan er uiteindelijk voor zorgen dat je website tijdelijk onbereikbaar wordt. Iets wat je graag wilt voorkomen dus!

Komt dit verkeer van bijvoorbeeld buiten Europa en is dat niet je doelgroep, dan kun je het missen als kiespijn. Nu kun je via het .htaccess-bestand stuk voor stuk losse IP-adressen gaan blokkeren, maar dat is niet erg efficiënt. Gelukkig kan het gemakkelijker. Je kunt namelijk ook landen in zijn geheel toestaan of weigeren.

Wat is het .htaccess-bestand?

Het .htaccess-bestand is een configuratiebestand die de webserver vertelt dat bepaalde standaardwaarden moeten worden overschreven. Zo weet de server dat je graag uitzonderingen wilt doorvoeren. Ziet de webserver een .htaccess-bestand, dan kijkt hij altijd eerst of hier iets in staat. Dit kan een redirect naar een andere pagina zijn, maar ook het blokkeren van specifiek internetverkeer. Is het .htaccess gecheckt, dan voert hij vervolgens zijn normale functie uit.

Waarom staat er een punt voor htaccess?
De punt zorgt ervoor dat dit bestand verborgen is en niet van buitenaf kan worden benaderd. Zo blijft de code die in dit bestand staat veilig en is deze niet in te lezen voor bezoekers van je website.

.htaccess-bestand bewerken

Heb je WordPress of een ander cms via Installatron geïnstalleerd, dan heeft deze al een .htaccess-bestand aangemaakt. Die staat in de /public_html/-map met de juiste standaardinstellingen voor dat specifieke cms. Voor WordPress is dat bijvoorbeeld het volgende.

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Je kunt via DirectAdmin eenvoudig het .htaccess-bestand bewerken. Log daar in en klik links in het menu op Systeeminfo en bestandenBestandsbeheer.

Menu van DirectAdmin met daarin de optie 'Bestandsbeheer'.

Klik vervolgens op de map met de naam public_html. Dit is de locatie waar je website staat. Klik nu met de rechtermuisknop op het bestand met de naam .htaccess en kies voor Bewerken.

Mappenboom met zichtbare beheeropties voor een bestand.

Je ziet dan de inhoud van het bestand en kunt aan de slag om het aan te passen. Merk op dat eventuele aanpassingen direct werkzaam zijn na het opslaan.

Je kunt ook de inhoud van het bestand kopiëren en in een tekstverwerker naar keuze plakken. Denk aan Kladblok, Notepad++, TextEdit of Visual Studio Code. Gebruik geen Word, dat is niet geschikt voor code. Ben je klaar met aanpassen, dan open je het bestand via Bestandsbeheer, plak je de regels erin en sla je het op.

Landen blokkeren met GeoIP

Nu je weet waar het .htaccess-bestand staat en hoe je het aanpast, kunnen we écht aan de slag. Je hoeft geen programmeergod te zijn om een blokkade in te stellen. Veel .htaccess-regels zijn met een beetje zoeken snel op het internet te vinden. Om te snappen hoe de werkt, starten we met wat je waarschijnlijk niet wilt bereiken: verkeer blokkeren uit Nederland, België en Luxemburg. Dat ziet er als volgt uit.

SetEnvIf GEOIP_COUNTRY_CODE BE DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 BE DenyCountry   
SetEnvIf GEOIP_COUNTRY_CODE NL DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 NL DenyCountry    
SetEnvIf GEOIP_COUNTRY_CODE LU DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 LU DenyCountry 
  
Deny from env=DenyCountry

Laten we deze code nu ontleden, zodat we ook precies weten wat we nou eigenlijk hebben opgeschreven. Het begint met de landen op die we willen blokkeren.

SetEnvIf GEOIP_COUNTRY_CODE BE DenyCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 BE DenyCountry

In het eerste gedeelte geven we aan dat we een invoer willen doen op basis van een landcode. In dit voorbeeld is dat BE (België). Het wordt gevolgd door wat we ermee willen doen. Hier is dat DenyCountry, ofwel toegang blokkeren. De tweede regel met ‘V6’ erin geeft aan dat je ook IPv6-adressen wilt weigeren. We hebben dan nog een klein stukje code over.

Deny from env=DenyCountry

Daarmee vertel je de webserver dat je alle bezoekers toegang geeft, behalve van de landen die je in de regels erboven hebt aangegeven.

Enkel verkeer toestaan uit de Benelux

De lijst met landen die je liever geen toegang tot je website wilt geven, kan erg lang worden als je enkel verkeer vanuit Nederland of de Benelux wilt toestaan. Gelukkig kun je het ook omdraaien en niemand toegang geven, tenzij anders aangegeven. In dat geval zal de code binnen het .htaccess er als volgt uit zien.

SetEnvIf GEOIP_COUNTRY_CODE BE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 BE AllowCountry    
SetEnvIf GEOIP_COUNTRY_CODE NL AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 NL AllowCountry  
SetEnvIf GEOIP_COUNTRY_CODE LU AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 LU AllowCountry  
  
Deny from all  
Allow from env=AllowCountry

Zoals je mogelijk al ziet, geeft deze code precies het tegenovergestelde weer. Het belangrijkste verschil is dat we nu AllowCountry in plaats van DenyCountry gebruiken. Hiermee zeg je dat verkeer uit België, Nederland en Luxemburg mag, maar dat verkeer uit alle andere landen moet worden geblokkeerd. Wil je dit, dan plaats je dit boven de bestaande regels en sla je het op.

Venster waarin het .htaccess-bestand wordt bewerkt met de een file editor.

De regels moeten bovenaan in het .htaccess-bestand staan
Doe je dit niet, dan kunnen aanvragen alsnog deels doorkomen.

Land van herkomst achterhalen

Zomaar verkeer blokkeren, is vaak niet verstandig. Je wilt immers zeker weten dat je legitieme bezoekers geen toegang ontzegt. Het is daarom slim om eerst te bekijken waar je bezoekers vandaan komen. Deze informatie vraag je op via de Webalizer Stats binnen DirectAdmin. Hier zie je precies uit welke landen het verkeer van je website komt. Bekijk hier alle landcodes die je kunt gebruiken.

Een specifiek IP-adres blokkeren

Je kunt ook overlast ervaren van specifiek één IP-adres. Die kan voor een piek zorgen in je resourcegebruik, omdat deze vele aanvragen binnen je website doet. Je ziet dan in de usage logs terug vanaf welk IP-adres dit gebeurt. Via AbuseIPDB kun je dan controleren of dit IP-adres bekend staat voor misbruik. Wil je een IP-adres blokkeren, dan ziet dat er bijvoorbeeld als volgt uit.

order deny,allow
deny from 255.0.0.0
deny from 198.51.100.

Met order allow,deny vertel je de webserver dat je een regel maakt voor zowel het toestaan als tegenhouden. De regels eronder zijn dan de IP-adressen die je wilt blokkeren. Merk op dat ik het tweede IP-adres bewust niet heb afgemaakt. Dit zegt dat alle IP-adressen die met 198.51.100 beginnen, moeten worden geblokkeerd. Ten slotte vertelt allow from all dat verkeer wordt toegelaten als het niet vanaf de genoemde IP-adressen komt.

Enkel je eigen IP-adres toestaan

Ook dit kun je omdraaien. Wil je enkel jezelf toegang geven, omdat het om bijvoorbeeld een ontwikkelomgeving gaat, dan kun je alleen je eigen IP-adres toestaan. De regels voor in het .htaccess-bestand zijn dan als volgt.

order deny,allow
deny from all
allow from 198.51.100.2

In deze code draaien we eigenlijk alles om. Met allow from geef je aan dat je verkeer wil toestaan van 198.51.100.2 en met deny from all zeg je dat al het ander verkeer moet worden geblokkeerd.

Het is erg belangrijk om deze volgorde aan te houden. Apache leest het .htaccess in chronologische volgorde uit. Geef je eerst deny from all aan, dan wordt de volgende regel voor de uitzondering niet uitgelezen. Al het verkeer zal dan worden tegengehouden. Merk ook op dat veel internetproviders met dynamische IP-adressen werken. Hierdoor kan je eigen IP-adres veranderen.

Wanneer wel en beter niet gebruiken?

Bepaal eerst je doelgroep, voordat je besluit verkeer te weren. Heb je een website voor een internationaal bedrijf, dan is landen blokkeren misschien onwenselijk. Bekijk dan of een specifiek IP-adres blokkeren de betere keuze is. Heb je een website voor een bedrijf die alleen binnen Nederland diensten levert, dan is landen blokkeren vaak een makkelijker besluit.

Merk op dat een ingestelde blokkade ook voor kan jou gelden. Als je verkeer van buiten de Benelux blokkeert en je gaat naar Frankrijk op vakantie, dan kun je vanaf daar je website zelf ook niet benaderen. Hopelijk heb je zo inzicht gekregen in hoe je ongewenst verkeer van je website kan weren! Heb je er vragen over, stuur dan gerust een e-mail naar Support voor hulp.

P.S. Op de hoogte blijven van alle artikelen, updates, tips en trucs die op ons blog verschijnen? Volg ons via Facebook, Twitter, Instagram, RSS en e-mail!

Deel dit blog
Marijn Flapper
Marijn Flapper

Marijn is werkzaam op de afdeling Support en heeft een passie voor alles wat met webhosting te maken heeft. Hij zet graag zijn vergaande kennis van websites in, om jou zo goed mogelijk te helpen.

Artikelen: 2

27 reacties

  1. Dus met deze code blokkeer ik China?:

    SetEnvIf GEOIP_COUNTRY_CODE CN DenyCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 CN DenyCountry

    Allow from all
    Deny from env=DenyCountry

  2. Mooi om op deze manier landen uit te sluiten/toe te staan. Helaas, zelfs wanneer ik US toesta wordt de FB crawler uitgesloten (linkedIn en andere geen probleem). Tijdelijke oplossing: om de 30 dagen (crawl tijd FB) de block opheffen & de FB debugger gebruiken. Als je pagina’s de weer de juiste Opengraph tags laat zien, block er weer op zetten voor 30 dagen. Neemt alleen wat tijd in beslag wat niet zou hoeven. Hoop dat hier nog oplossing voor is/komt.

    SetEnvIf GEOIP_COUNTRY_CODE BE AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 BE AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE NL AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 NL AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE LU AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 LU AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE NO AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 NO AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 US AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE CA AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 CA AllowCountry

    Deny from all
    Allow from env=AllowCountry

    • thnx. 🙂 gelijk geprobeerd maar ik krijg nu een 403 forbidden foutmelding. Ik heb het voorbeeld hieronder ingekort met de Ips. Volgens mij heb ik het niet goed gedaan. Als ik het nu zo doe..

      SetEnvIf GEOIP_COUNTRY_CODE BE AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE_V6 BE AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE NL AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE_V6 NL AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE LU AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE_V6 LU AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE NO AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE_V6 NO AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
      SetEnvIf GEOIP_COUNTRY_CODE_V6 US AllowCountry

      Deny from all
      Allow from env=AllowCountry

      order allow,deny
      Allow from 204.15.20.0/22
      Allow from 69.63.176.0/20
      Allow from 66.220.144.0/20
      Allow from 66.220.144.0/21
      deny from all

      Krijg ik een 403 foutmelding. Website is niet meer toegankelijk. Sorry ben er niet uber handig mee

    • Vermoedelijk zit het probleem in je eigen IP-adres. Als ik je verhaal zo lees, dan lijkt het erop dat je jezelf door de code buitensluit. Het beste kun je contact opnemen met support@antagonist.nl en je IP-adres doorgeven (check: whatismyip.com).

      Mogelijk is je IP-adres niet Nederlands, Belgisch of Noors. Dit kan vele oorzaken hebben. Bijvoorbeeld een VPN of een recent gewijzigd IP dat voorheen in een ander land gebruikt werd wat nog niet veranderd is in de GeoIP database. Hier kan vertraging in zitten (van soms een paar maanden).

  3. Ik vind het helemaal geen goed idee om bezoekers uit bepaalde landen te blokkeren 🙁 wat als ik als Nederlander in China jouw site bezoeken wil? Allereerst raak ik flink teleurgesteld, want ik zie dat mijn favoriete website ongeoorloofd onderscheid maakt tussen mensen uit verschillende landen. Dat schaadt je imago. Maar ik wil alsnog je pagina lezen dus dan pak ik maar gewoon een VPN. En dat kan iedereen doen, dus daarmee is dat hele gehannes met geoblocking niet eens meer effectief.

    Ik zeg gewoon niet doen.

    • Uiteraard moet iedereen voor zichzelf bepalen wat voor hem of haar het beste werkt.

      Als een website veel last heeft van kwaadwillend verkeer (het gaat hier niet om mensen, maar om netwerkverkeer), bijvoorbeeld uit China, dan kan dit een handige oplossing zijn. Zeker als je je niet richt op de Chinese markt. Je wil kwaadwillend verkeer immers zoveel mogelijk tegengaan. Voorkomen is beter dan genezen. Als je slachtoffer wordt van malware, of je website gaat down, of er wordt spam onder jouw naam verstuurd, dan lijdt dat tot grote imagoschade.

      Natuurlijk kan het voorkomen dat een Nederlandse bezoekers zich in China bevindt (bijvoorbeeld op vakantie is) en daardoor op een netwerk komt waarmee hij of zij moeite heeft om verbinding te krijgen met je website. Maar het is goed om je af te vragen, hoe vaak dat werkelijk voorkomt.

      Daarnaast worden vele buitenlandse websites door China zelf ook geblokkeerd. De kans is dus groot dat jij als bezoeker vanuit China heel veel westerse websites niet kunt bereiken. Het gebruik van een VPN is zodoende een goede oplossing daarvoor.

  4. Hoi Mark, je hebt idd een punt.
    Intussen heb ik ervoor gekozen, omdat de FB-crawler steeds weer werd geblocked, om de Htacces file terug te zetten zonder blokkeringen.

    Naast Wordfence heb ik vervolgens de pluging IThemes Security geïnstalleerd en het werkt 10x beter.

  5. helaas werkt het bij mij ook niet om alle landen te blokkeren zo geeft bijv PageSpeed Insights de volgende foutmelding

    Lighthouse returned error: ERRORED_DOCUMENT_REQUEST. Lighthouse kan de door jou aangevraagde pagina niet goed laden. Zorg ervoor dat je de juiste URL test en dat de server correct reageert op alle verzoeken. (Statuscode: 403)Sluiten

    • Als je wordt buitengesloten door de instellingen in de .htaccess, dan zal je een 403-melding te zien krijgen. Je kunt het beste je IP-adres nakijken en anders contact opnemen met support, zodat wij jou daarbij kunnen helpen.

  6. Wat ziet een ander land eigenlijk die geblockt is van je website?
    En hoe kan je zelf checken of het gelukt is?
    Is daar een tool voor, zoals Gtmetrix om dat te checken?

  7. Het volgende stukje in het artikel is onvolledig:

    order deny,allow
    allow from 198.51.100.2

    Tussen deze regels moet nl. volgens mij, na een test, nog het volgende worden toegevoegd:

    deny from all

  8. Ik heb dit in mijn .htaccess gezet:

    SetEnvIf GEOIP_COUNTRY_CODE BE AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 BE AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE NL AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 NL AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE LU AllowCountry
    SetEnvIf GEOIP_COUNTRY_CODE_V6 LU AllowCountry

    Deny from all
    Allow from env=AllowCountry

    Maar ik krijg een 500 Internal Server Error en mijn website is niet meer te zien. Wat doe ik fout

    • Doorgaans duidt dat op een syntaxfout. Je kunt in het foutenlogboek van DirectAdmin dan vaak terugvinden op welke regel het mis gaat. Lees hierover meer op: https://www.antagonist.nl/blog/logboek-bekijken/

      Lukt het je zo niet om de oorzaak te achterhalen, haal dan de betreffende regels uit het .htaccess-bestand weg. Je website moet dan weer benaderbaar zijn. Neem vervolgens contact op met Support. Als je daarin benoemt om welk domein het gaan, dan kijken we graag even met je mee!

  9. Ik heb de code in mijn .htaccess toegevoegd, maar krijg een 500 error.
    Ik heb mijn provider gevraagd om hulp, dit is zijn antwoord:

    Dit gaat niet werken omdat wij die module niet gebruiken en niet bijhouden welke IP reeksen horen bij welke landen. Mochten er nog verdere vragen zijn, dan horen we deze altijd graag van je!

    • Bedankt voor de reactie, Pieter! Begrijp ik correct dat je momenteel klant ben bij een andere hostingprovider? We kunnen je hier dan verder helaas niet bij helpen. Zij zouden deze module namelijk in moeten schakelen om het werkend te krijgen en daar hebben wij geen invloed op.

  10. ok je kan dus in de .htaccess veel instellen maar hoe stel je die dan in om bijvoorbeeld googlebot fout dubbele pagina’s weg te krijgen.
    mijn site http://www.solarcleaningvdw.be kan je met verscheidene varianten benaderen en daardoor geeft google die fout.
    VB
    je kan door het intypen van één van volgende regels steeds op de site
    http://www.solarcleaningvdw.be
    https://www.solarcleaningvdw.be
    http://www.solarcleaningvdw.be

    ik zou eigenlijk dus willen dat google rechtstreeks en enkel en alleen een indexering doet van mijn index.htm
    dus dat je door http://www.solarcleaningvdw.be of een andere ingave altijd komt op
    http://www.solarcleaningvdw.be/index.htm
    kan dat via .htaccess zo ingesteld worden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Sterren Webhosting: 5 sterren uit 5.830 reviews

60.000+ webhostingpakketten actief
Bij de beste webhosters in MT1000 en Emerce 100