.htaccess Bestanden

Het .htaccess-bestand is een krachtig hulpmiddel dat door Apache-webservers wordt gebruikt om instellingen voor een specifieke map van een website te wijzigen. Hiermee kun je gemakkelijk dingen zoals beveiliging, URL-aanpassingen, foutmeldingen en meer beheren zonder de hoofdsysteeminstellingen te hoeven wijzigen.

In deze cursus leer je de basisprincipes van het werken met .htaccess-bestanden en hoe je ze kunt gebruiken voor veelvoorkomende taken.

1. Basisopzet van een .htaccess-bestand

Een .htaccess-bestand wordt opgeslagen in de hoofdmap of een submap van je website en kan meerdere regels bevatten die direct van invloed zijn op de map waarin het zich bevindt en alle submappen.

Voorbeeld van een eenvoudig .htaccess-bestand:

# Dit is een commentaarregel, alles na het hekje wordt genegeerd door de server
Options +FollowSymLinks
RewriteEngine On

2. Veelvoorkomende toepassingen van .htaccess

a. Redirects

Redirects worden gebruikt om bezoekers van de ene URL naar een andere om te leiden. Dit is handig als je een pagina hebt verplaatst of een nieuwe URL-structuur hebt.

301 Redirect (Permanent):

Redirect 301 /oude-pagina.html http://www.voorbeeld.com/nieuwe-pagina.html

302 Redirect (Tijdelijk):

Redirect 302 /oude-pagina.html http://www.voorbeeld.com/tijdelijke-pagina.html

b. Directory Indexing

Met directory indexing kun je aangeven welke bestanden als indexpagina's moeten worden behandeld.

DirectoryIndex index.html index.php

c. Toegangscontrole

Je kunt de toegang tot bepaalde bestanden of mappen beperken op basis van IP-adressen.

Toegang beperken op IP-adres:

Order Deny,Allow
Deny from all
Allow from 123.456.789.000

d. URL herschrijven

Met mod_rewrite kun je nette en leesbare URL's creƫren, wat goed is voor de SEO (zoekmachineoptimalisatie) van je website.

RewriteEngine On
RewriteRule ^artikel/([0-9]+)/([a-z\-]+)$ artikel.php?id=$1&title=$2 [L]

e. Wachtwoordbeveiliging

Je kunt bepaalde delen van je website met een wachtwoord beveiligen. Dit doe je met twee bestanden: een .htaccess-bestand en een .htpasswd-bestand.

.htaccess-bestand:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /pad/naar/.htpasswd
Require valid-user

.htpasswd-bestand:

Gebruik een online generator om een versleuteld wachtwoord te maken. Een voorbeeld van zo'n regel in .htpasswd kan er als volgt uitzien:

user1:$apr1$CQhr2JQN$7iPjo6BJxSlbB/jvB4JHc.

3. Geavanceerde configuraties

a. Foutafhandeling

Je kunt aangepaste foutpagina's maken voor verschillende HTTP-statuscodes.

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

b. MIME Types instellen

Je kunt aangeven hoe bepaalde bestandstypen door de browser moeten worden behandeld.

AddType application/pdf .pdf
AddType image/x-icon .ico

c. Caching headers

Je kunt caching headers instellen om de prestaties van je website te verbeteren door te specificeren hoe lang bepaalde bestanden moeten worden gecachet.

<filesMatch "\.(jpg|jpeg|png|gif|css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>

4. Best practices

  • Gebruik Commentaar: Voeg commentaar toe aan je .htaccess-bestand om de functionaliteit van de regels uit te leggen. Dit maakt het makkelijker om later wijzigingen aan te brengen.
  • Beperkingen: Houd er rekening mee dat .htaccess-bestanden invloed hebben op de prestaties van je server. Gebruik ze dus met mate en optimaliseer waar mogelijk de serverconfiguratie op een hoger niveau (bijvoorbeeld in de Apache-configuratiebestanden).
  • Beveiliging: Plaats gevoelige bestanden zoals .htpasswd buiten de webroot om directe toegang te voorkomen.

Samenvatting

Het .htaccess-bestand is een krachtig hulpmiddel voor het beheren van je website. Door de juiste configuraties toe te passen, kun je de beveiliging, prestaties en gebruikerservaring van je website aanzienlijk verbeteren. Experimenteer met de voorbeelden in deze cursus en pas ze aan naar de specifieke behoeften van je website.


Oefening: Wachtwoordbeveiliging van een Webpagina met .htaccess

Doel

In deze oefening leer je hoe je een webpagina kunt beveiligen met een wachtwoord door gebruik te maken van een .htaccess- en .htpasswd-bestand.

Benodigdheden

  • Toegang tot een webserver die Apache gebruikt.
  • FTP- of SSH-toegang tot de server om bestanden te kunnen uploaden en bewerken.
  • Een teksteditor (zoals Notepad, Sublime Text of Visual Studio Code).

Stappen

Stap 1: Maak een directory aan om te beveiligen

Maak een nieuwe directory aan op je webserver die je wilt beveiligen. Bijvoorbeeld, maak een directory genaamd beveiligd.

Stap 2: Maak een .htaccess-bestand aan

Maak een nieuw tekstbestand en noem het .htaccess. Voeg de volgende inhoud toe aan dit bestand:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /pad/naar/.htpasswd
Require valid-user

Uitleg van de code:

  • AuthType Basic: Dit geeft aan dat we basisverificatie gebruiken.
  • AuthName "Restricted Area": Dit is de naam van het beveiligde gebied dat de gebruikers zullen zien wanneer ze proberen toegang te krijgen.
  • AuthUserFile /pad/naar/.htpasswd: Dit is het pad naar het .htpasswd-bestand dat de gebruikersnaam en het versleutelde wachtwoord bevat. Zorg ervoor dat je het juiste pad naar je .htpasswd-bestand opgeeft.
  • Require valid-user: Dit betekent dat een geldige gebruiker vereist is om toegang te krijgen.

Stap 3: Maak een .htpasswd-bestand aan

Maak een nieuw tekstbestand en noem het .htpasswd. Gebruik een online generator om een gebruikersnaam en een versleuteld wachtwoord te genereren. Een goede online generator is bijvoorbeeld htpasswd generator.

Gebruik de volgende gebruikersnaam en wachtwoord voor dit voorbeeld:

  • Gebruikersnaam: user_1
  • Wachtwoord: test_password

De gegenereerde regel voor het .htpasswd-bestand ziet er als volgt uit:

user_1:$apr1$3mH.hHf/$7y0hB7e4OEyY0mUBYQfvc1

Stap 4: Upload de bestanden naar je server

  1. Upload het .htaccess-bestand naar de directory die je wilt beveiligen (in dit geval de beveiligd directory).
  2. Upload het .htpasswd-bestand naar een veilige locatie op je server, bij voorkeur buiten de webroot (bijvoorbeeld /home/user/.htpasswd).

Stap 5: Pas het pad in .htaccess aan

Zorg ervoor dat het pad naar je .htpasswd-bestand in het .htaccess-bestand correct is. Als je het .htpasswd-bestand hebt geplaatst in /home/user/.htpasswd, dan moet je .htaccess-bestand er als volgt uitzien:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/user/.htpasswd
Require valid-user

Stap 6: Test de beveiliging

Navigeer naar de directory in je webbrowser die je hebt beveiligd (bijvoorbeeld http://www.jouwwebsite.com/beveiligd). Je zou nu gevraagd moeten worden om een gebruikersnaam en wachtwoord in te voeren. Gebruik de gebruikersnaam user_1 en het wachtwoord test_password.

Samenvatting

Als je de bovenstaande stappen hebt gevolgd, heb je succesvol een directory op je website beveiligd met een wachtwoord. Dit is een eenvoudige maar effectieve manier om gevoelige inhoud te beschermen.

Mocht je vragen of problemen hebben, aarzel dan niet om hulp te vragen!