Bereikbaar van 09:00 - 18:00 (ma-vrij)

Wat is een .htaccess bestand en hoe maak je hem aan?

Door Hipex | 20 april 2020 |
  1. Nieuws & informatie
  2. Techniek
  3. Wat is een .htaccess bestand en hoe maak je hem aan?

Een .htaccess bestand is een configuratiebestand wat op mapniveau ligt en waarin bepaalde instructies staan. Deze instructies geven aan hoe het binnenkomend verkeer op je website wordt afgehandeld.

Dit kan over de websitetoegang gaan, bijvoorbeeld via een URL-omleiding, maar ook over een URL-verkorting of een toegangscontrole. Zo zijn er een aantal zaken die kunnen worden vastgelegd in dat .htaccess bestand.

Het bestand moet worden ondersteund door de verschillende webservers. Het .htaccess bestand kan ook sommige instellingen van bepaalde submappen aanpassen.

In dit artikel lees je wat je nog meer met een .htaccess bestand kunt doen, geven we enkele concrete voorbeelden en laten we zien hoe je deze omzet naar Ngnix.

Note: Hipex maakt geen gebruik van .htaccess, maar van Nginx. Vandaar dat je ook leest hoe je .htaccess om kunt zetten naar Ngnix.

Wat kun je met een .htaccess?

  • IP-adressen blokkeren
  • Foutmeldingen aanpassen
  • Mappen beveiligen
  • Redirecten
  • De rewrite engine aanjagen

Een bestand zonder naam

Een .htaccess bestand is eigenlijk een extensie. Dat zijn de laatste paar letters die horen bij een bestandsnaam. Zoals het bestand van een afbeelding kan eindigen op jpg, png of gif.

De bestandsextensie volgt meestal op de naam van het bestand, gescheiden door een punt, bijvoorbeeld: vakantiefoto.jpg.

Een .htaccess bestand is eigenlijk een bestand zonder naam die je in je root folder plaatst of eventueel in een andere map.

Hoe maak je een .htaccess bestand aan?

Het klinkt misschien heel ingewikkeld, maar een .htaccess maak je heel simpel en snel zelf. Dit doe je bijvoorbeeld in het kladblok of notepad. Een .htaccess bestand is namelijk niets meer dan een simpel tekstbestand van een paar regels.

De regels die in het bestand staan, bepalen ook het doel van de .htaccess. Als je het bestandje hebt gemaakt, plaats je het op je hostingruimte in de desbetreffende map. Dus de map waarin je de regels wilt toepassen.

Als er in je root map al een .htaccess staat, komt deze te vervallen als er ook een in de submap wordt geplaatst. De .htaccess in de submap overruled namelijk de .htaccess in de root.

Voorbeelden van veelgebruikte .htaccess regels

Hieronder krijg je een aantal voorbeelden van veelgebruikte .htaccess regels:

Een .htaccess redirect aanmaken

Met de onderstaande codes is het mogelijk om een domein te verwijzen naar een specifieke map binnen het hostingpakket. Je plaatst hiervoor de volgende codes in het .htaccess bestand:

RewriteEngine On
RewriteRule ^$ /mapnaam[L]

Wil je de domeinnaam juist verwijzen naar een andere domeinnaam, dan gebruik je deze codes:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?jouw-eigen-domein.nl
RewriteRule ^(.*) http://www.jouw-tweede-domein.nl/$1\[R=301,L]

Deze code is ook een optie:

Redirect 301 / http://www.jouw-eigen-domein.nl

Wil je de domeinnaam redirecten naar een speciale map van een ander domein:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?jouw-eigen-domein.nl$\[NC]
RewriteRule ^ http://jouw-tweede-domein.nl/mapnaam\[P]

Met deze code maak je een redirect en behoud je toch de domeinnaam:

RewriteCond %{HTTP_HOST} ^(www.)?jouw-eigen-domein.nl$\[NC]
RewriteRule ^((?!mapnaam/).*)$ /mapnaam/$1\[L,NC]

De code voor HTTPS forceren

Als je bijvoorbeeld liever wilt dat alle bezoekers van je website gebruik maken van een versleutelde SSL/HTTPS dan kun je hiervoor een code plaatsen in het .htaccess bestand.

Dit doe je voor het hele domein met de volgende code:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 \[R,L]

Als het slechts om een deel van het domein gaat, dan kun je de volgende code plaatsen in de specifieke mappen.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} \[R,L]

IP-adressen blokkeren

Als je bepaalde IP-adressen wilt blokkeren dan gebruik je deze code. Vanzelfsprekend moet je de cijfers die er nu staan vervangen door de cijfers van het IP-adres wat je wilt blokkeren:

order deny,allow
deny from 12.34.56.78
deny from 87.65.43.21
allow from all

Toegang weigeren tot .htaccess

Ook anderen kunnen heel nieuwsgierig zijn naar wat jij allemaal in je .htaccess hebt staan. Wil je niet dat een ander dit ziet, dan plaats je de volgende code:

order allow,deny
deny from all

Foutmeldingen

Bij een foutmelding op een website krijg je vaak een nietszeggende pagina te zien. Het is mooier om een zelfgemaakte pagina in te stellen. Hiervoor kun je de volgende code gebruiken:

ErrorDocument 403 /fouten/geen-toegang.html
ErrorDocument 404 /fouten/niet-gevonden.html

htaccess omzetten naar Nginx

De Nginx-servers worden steeds populairder en gebruikt als alternatief voor Apache. Als je voor een Nginx server kiest heeft dat ook invloed op je .htaccess code. Deze moet dan omgezet worden waardoor deze compatible is met een Nginx server. Je moet als het ware het http-verkeer omleiden naar https in Nginx.

Wat is Nginx?

Nginx is een open source webserver. Naast webserver wordt Nginx ook gebruikt als reverse proxy, HTTP cache en load balancer. Nginx is gericht op het leveren van hoge prestaties met een laag geheugen gebruik.

Bij Hipex maken we gebruik van Nginx omdat tests uitwijzen dat we hier betere performance resultaten mee behalen dan Apache. Jaren geleden was dit verschil erg groot maar vandaag de dag komt Apache dicht bij de prestaties van Nginx in de buurt.

Meer informatie over Nginx lees je op onze kennisbank >>.

De voordelen van HTTPS via HTTP

Bij https via http worden alle gegevens in beide richtingen versleuteld waardoor het niet gelezen kan worden als het onderschept wordt. Hierdoor word je website door Google en andere populaire browser eerder als veilig beschouwd.

Voorkom onvoorspelbaar gedrag

Als je http om wilt leiden naar https in Nginx dan heeft het configureren van een apart serverblok de voorkeur, voor iedere versie van de website.

Je moet voorkomen dat dat het verkeer wordt omgeleid op basis van de if-richtlijn. Dit kan namelijk onvoorspelbaar gedrag van de server veroorzaken.

De omleiding per site

Als je http gaat omleiden naar https per site en op dat domein is een ssl-certificaat geïnstalleerd, dan heb je meestal twee serverblokken.

Het eerste serverblok van de site voor de http-versie is op poort 80 en de https-versie heeft zijn poort op 443.

Wil je één website omleiden? Lees dan dit artikel over het redirecten van http naar https in onze kennisbank.

Meestal wil je ook dehttps-www-versievan de site omleiden naar de niet-www of vice versa. De aanbevolen manier om de omleiding te doen is het maken van een aparte server blok voor zowel www en niet-www versies. Hoe je dit precies doet lees je in dit artikel over het redirecten van www in onze kennisbank.

Na het wijzigen van de configuratiebestanden is reload een voldoende, een restart is niet nodig na aanpassen van. config.

Hipex heeft hier het 'nginx-reload' commando voor dat klanten kunnen gebruiken. Goed om te vermelden is dat dit commando eerst de config test (op (syntax) fouten) en daarna een reload doet.

De omleiding voor alle sites

Wil je geen afzonderlijk http-serverblok maken voor iedere site apart, dan maak je er één die alle http-aanvragen omleidt naar de https-blokken.

Hiervoor open je het Nginx-configuratiebestand en breng je de volgende wijzigingen aan:

server
listen 80 default_server;
listen \[::]:80 default_server;
server\_name \_;
return 301 https://$host$request_uri;