Home   Webhosting   Wat is .htaccess en wat kun je ermee?

Wat is .htaccess en wat kun je ermee?

De kans is groot dat je het .htaccess-bestand wel eens bent tegengekomen op je hostingpakket of van dit bestand gebruik hebt gemaakt. In dit artikel leg ik uit wat .htaccess is en wat je ermee kunt doen.

Wat is het .htaccess-bestand?

.htaccess is een configuratiebestand. Je kunt er bepaalde instellingen mee wijzigen (configureren). In de basis is het een tekstbestand. Met regels in het bestand vertel je de server hoe om te gaan met verschillende aanvragen vanuit bezoekende browsers.

Het eerste dat opvalt is de benaming van dit bestand. Het bestaat alleen uit de extensie .htaccess. De naam .htaccess is een afkorting die staat voor “HyperText Access”.

De punt aan het begin, zorgt ervoor dat het een verborgen bestand is. Hierdoor is het bestand uit veiligheidsoverwegingen standaard niet zichtbaar via de meeste FTP-programma’s.

Met FTP-software kun je mappen en bestanden op de server bekijken en up- en downloaden naar en van de server. Omdat je niet wil dat iedereen direct ziet dat er een .htaccess bestand bestaat, wordt het standaard verborgen.

Het .htaccess-bestand kun je openen en bewerken met een tekstverwerker zoals Kladblok of Notepad++. Dit is ook mogelijk met de Filemanager in het Control Panel.

Waarvoor wordt .htaccess gebruikt?

Je kunt .htaccess gebruiken voor tal van instellingen en acties. In het tekstbestand neem je korte opdrachtregels op die ervoor zorgen dat de server deze uitvoert.

Dit zijn een aantal dingen die je met .htaccess kunt regelen:

  • Herschrijven van URL’s, onder meer voor zoekmachineoptimalisatie
  • Verkeer doorsturen
  • Bezoekers blokkeren of juist toestaan
  • Eigen 404-pagina instellen
  • Caching- en compressie-instellingen

Je kunt met .htaccess ook de standaard serverinstellingen wijzigen of omzeilen. Het .htaccess-bestand overruled in sommige gevallen de standaard serverinstellingen.

Waar vind ik het .htaccess-bestand?

Standaard is het bestand niet aanwezig op je hostingpakket. Je kunt het zelf met een tekst-editor aanmaken of het bestand aanmaken via Filemanager in het Control Panel.

Je plaatst dit bestand in de map waarin je de opdrachten wilt laten uitvoeren. Zo kun je heel specifiek per map aangeven welke instellingen en functies voor die map gelden.

Als je het bestand aanmaakt, let dan goed op de benaming. Met dubbel c en dubbel s. Vergeet ook de punt niet.

Instellingen voor je gehele website

Wil je dat het .htaccess-bestand voor heel je website geldt? Dan plaats je het in de hoofdmap van je hostingpakket of subdomein. Dit is de map /httpdocs.

Als je het .htaccess-bestand in een submap plaatst, dan gelden de instellingen alleen voor de submap en alle mappen daarin. Het .htaccess-bestand werkt dus ook voor de onderliggende mappen.

Plaats je het bestand dus in de httpdocs-map, dan geldt deze ook voor /httpdocs/submap.

Wat kun je met het .htaccess-bestand?

Er zijn heel veel instellingen mogelijk met .htaccess. Je hebt dit bestand alleen nodig als je één van de functies wilt gebruiken.

De belangrijkste functies licht ik met voorbeelden graag kort toe.

Ga je zelf aan de slag met .htaccess? Dan is het handig als je een paar basisregels aanhoudt.

Opbouw van het .htaccess-bestand

Om een goed overzicht te houden in het bestand, is het handig om soortgelijke opdrachten te bundelen.

Ook als je met meerdere mensen aan de site werkt, kan het handig zijn om opmerkingen te plaatsen in het bestand. Zo weet iedereen wat bepaalde regels precies doen.

Structuur aanbrengen

Je kunt structuur en duidelijkheid in het bestand aanbrengen door de opdrachten vooraf te laten gaan door een regel met een hashtag of hekje en een spatie aan het begin. Dit zorgt ervoor dat die regel niet wordt uitgevoerd.

Dat ziet er zo uit:

# START FORCEREN SSL

Je kunt er zelfs voor kiezen om de regelset ook af te sluiten met zo’n regel. Zo is het nog duidelijker waar de regels ophouden. Zeker bij een langere lijst met opdrachten maak je het zo een stuk overzichtelijker.

# END FORCEREN SSL

Witregels toevoegen

Als je regels toevoegt in .htaccess, houd dan tussen de verschillende groepen met opdrachten ook een lege regel aan. Voor de werking is het niet van belang, je houdt het daarmee wel overzichtelijk.

Voorkom Internal Server Error

Het aanpassen van een .htaccess-bestand is niet geheel zonder risico. Als je een # voor een regel vergeet, een onjuist commando of een typefout in een opdrachtregel maakt, dan is je website offline.

De website geeft dan een 500-foutmelding, ook Internal Server Error genoemd. Nadat je de fout in .htaccess hebt hersteld, is je site meestal weer online.

Veelgebruikte functies

Voor ik een aantal veelgebruikte functies van .htaccess met je doorneem, is het goed om te weten dat je niet altijd handmatig in dit bestand werkt. Soms voeg je hier, zonder dat je het weet, regels aan toe.

Content management systemen zoals WordPress, Joomla en Drupal schrijven zelf ook in dit bestand. Vaak zijn dit rewrite-regels. Ook beveiligings- en cachingplugins voegen hier regels aan toe.

Als je bijvoorbeeld in de WordPress-plugin Wordfence een IP-adres blokkeert, dan schrijft Wordfence de opdracht hiervoor in .htaccess.

Ook het Control Panel gebruikt .htaccess. Laten we daar eerst eens naar kijken.

PHP-versie wijzigen

Als een hostingpakket op een server actief wordt, dan geldt op dat pakket de standaard PHP-versie die op de server is ingesteld. Regelmatig passen we die standaard aan naar de nieuwste stabiele versie van PHP.

In dat geval is er nog geen .htaccess-bestand aanwezig. Pas als je in het Control Panel de PHP-versie wijzigt naar een andere versie dan de standaard, wordt een .htaccess-bestand gegenereerd.

Hierin wordt meteen de regel geplaatst die ervoor zorgt dat de gekozen PHP-versie actief is. Het Control Panel ziet of er al een .htaccess-bestand bestaat. Is dat zo? Dan wordt de regel voor de niet-standaard PHP-versie toegevoegd.

PHP-versie per map instellen

De gekozen PHP-versie wordt actief voor je gehele hoofd- of subdomein, ook de bestanden in sub-mappen volgen de regels in het .htaccess-bestand.

Heb je verschillende scripts in submappen op je pakket staan en wil je voor deze een andere PHP-versie gebruiken? Activeer dan via .htaccess in de betreffende map de gewenste PHP-versie.

De regels voor het bepalen van de PHP-versie zien er zo uit:

# START PHP-VERSIE
AddHandler application/x-httpd-php73 .php
# END PHP-VERSIE

In dit voorbeeld hebben we met een begin- en eindregel structuur aangebracht. Het is duidelijk wat de regel hiertussen precies doet.

Deze opdrachtregel geeft de server de opdracht om alle bestanden met de extensie .php door de applicatie x-httpd-php73 uit te voeren.

In dit geval wordt PHP 7.3 geactiveerd. Om een andere versie te gebruiken, wijzig je 73 in de versie die je wilt gebruiken; bijvoorbeeld 70 voor PHP 7.0 of 74 voor PHP 7.4.

PHP-versie verandert niet

Het komt voor dat je in het Control Panel een nieuwe PHP-versie hebt geactiveerd en WordPress toch aangeeft dat je een oude PHP-versie gebruikt. De oorzaak kan zijn dat WordPress in een submap staat en daarin via .htaccess nog een verwijzing naar een oude PHP-versie aanwezig is.

Open het .htaccess-bestand om te bekijken of een soortgelijke regel is toegevoegd. Pas de regel aan of verwijder deze om gebruik te maken van de standaard-versie die voor de bovenliggende map geldt.

Andersom kan natuurlijk ook. Dan is in de bovenliggende map een oudere versie actief en via .htaccess in de lagere map activeer je dan toch een nieuwere versie.

Je website beveiligen door bezoekers te blokkeren

Met .htaccess kun je bezoekers blokkeren om je website of een bepaalde map of pagina te bezoeken. Dit blokkeren gebeurt bijvoorbeeld op basis van IP-adres, land of user agent.

Blokkeren van bezoekers

Wil je de website voor anderen ontoegankelijk maken, bijvoorbeeld als de website nog niet af is? Dan kun je alleen jouw IP-adres toegang geven tot de bestanden.

Bijna alle bezoekers blokkeren

Gebruik hiervoor onderstaande regels:

# START BLOKKEREN BEZOEKERS
order deny,allow
deny from all
allow from 10.0.0.1
allow from 127.0.0.1
# END BLOKKEREN BEZOEKERS

In dit voorbeeld geef je in de eerste regel aan in welke volgorde de server de regels moet hanteren. De order-regel met eerst deny en dan allow, geeft de server aan dat de deny-regels eerst verwerkt moeten worden en dat daarna pas gekeken moet worden naar de allow.

Plaats geen spatie tussen de order, deny en de komma. Dit moet aan elkaar geschreven worden, anders werkt het niet.

In dit geval geeft de deny-regel aan dat iedereen wordt geblokkeerd. Daarna bekijkt de server of een bezoeker misschien voldoet aan de eisen om toch toegelaten te worden.

Draai je de volgorde bij dit voorbeeld om, dan geef je de server de opdracht om eerst de allow-regels te bekijken, die bezoekers toe te staan en daarna alsnog te blokkeren.

Dat is niet handig. De volgorde is dus belangrijk voor de goede werking.

Enkele bezoekers blokkeren

Voor het blokkeren van enkele bezoekers, bijvoorbeeld comment-spammers of ander gespuis, dan kun je onderstaande gebruiken.

# START BLOKKEREN COMMENT-SPAMMERS
order allow,deny
allow from all
deny from 10.0.0.1
deny from 127.0.0.1
# END BLOKKEREN COMMENT-SPAMMERS

Hier geef je aan dat de server eerst moet kijken naar de allow-regels en dan de deny-regels moet hanteren.

Blokkeer een specifiek bestand of map

Verder kun je ook alleen bepaalde mappen of bestanden blokkeren. Bijvoorbeeld

# START TOEGANG PDF
<Files "ledenlijst.pdf">
order deny,allow
deny from all
allow from 10.0.0.1
allow from 127.0.0.1
</Files>
# END START TOEGANG PDF

Zo kun je met onderstaande code ook de toegang tot .htaccess verbieden. Wel zo veilig.

# START TOEGANG HTACCESS
<Files .htaccess>
order allow,deny
deny from all
</Files>
# END TOEGANG HTACCESS

Vang bezoekers af en stuur ze door

In deze voorbeelden krijgen de bezoekers, die geen toegang hebben, een 403 Forbidden-foutmelding te zien. Dat is niet zo chique. Met een enkele regel kun je die bezoekers doorsturen naar een andere pagina of website.

# START CUSTOM 403
ErrorDocument 403 http://www.alternatiefdomein.nl/alternatieve-map/
# END CUSTOM 403

Hier wordt aangegeven welke pagina moet worden weergegeven wanneer een 403-foutmelding wordt gegenereerd. Dit kun je ook instellen voor andere foutmeldingen, zoals de eerder genoemde 500 Internal Server Error.

Let op! Gebruik geen pagina vanuit dezelfde map of een onderliggende map daarvan. Dan komt de bezoeker in een “loop” terecht.

SSL instellen

Zoals je toegang kunt geven of weigeren, is het dus ook mogelijk om bezoekers de gewenste richting op te duwen. Dat doe je ook als je SSL op de juiste manier instelt voor je website.

Om ervoor te zorgen dat alle bezoekers gebruik maken van het certificaat, forceer je ze met .htaccess-regels om https te gebruiken, in plaats van http.

Dat kan met onderstaande regels:

# START SSL FORCEREN
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# END SSL FORCEREN

Er zijn nog veel meer mogelijkheden met .htaccess. We hebben het bijvoorbeeld nog niet gehad over redirects en het blokkeren op basis van land of user agent.