Htaccess

Wanneer je gebruikt maakt van een Apache webserver, is het meestal mogelijk om ook gebruik te maken van .htaccess bestanden. Dit heet Access Control en biedt ontzettend veel mogelijkheden.

Configuratie van Apache

Als eerste moet in het Apache configuratie bestand .htaccess geactiveerd staan en de naam moet op .htaccess staan. Dit staat in het httpd.conf bestand. Dit bestand staat in de conf directory van de Apache server. Zorg dat de optie "AccesFileName op ".htacces" staat. Vervolgens moet de "AllowOverride" optie in httpd.conf aanstaan, in plaats van de standaardinstelling "None". AllowOverride zorgt ervoor dat je de .htaccess file kunt gebruiken. AllowOverride ondersteunt de volgende opties:

  1. AuthConfig
  2. FileInfo
  3. Indexes
  4. Limit
  5. Options
  6. All
  7. None

Als je AllowOverride op "All" zet, kun je alles doen met je .htaccess file. (dus AuthConfig, FileInfo, Indexes, Limit en Options) Als je alleen wil dat iemand een directory kan beveiligen met een wachtwoord, zet je AuthConfig en Limit aan, gescheiden door een spatie:

AllowOverride AuthConfig Limit

Met "FileInfo" kun je onder andere "Custom Error Pages" aanroepen, hiermee kun je je eigen 404 (en dergelijke) pagina�s aanroepen. Maar om het makkelijk te houden gebruiken wij dus:

AllowOverride All

Let wel op, want deze optie moet je een aantal keer zetten in je http.conf.

Beveiliging van een directory

Wanneer je in een bepaalde directory een .htaccess bestand zet, kun je deze directory beveiligen met een username en wachtwoord. Wanneer je het volgende in je .htaccess zet, zal je een window krijgen die om username en wachtwoord vraagt wanneer je de directory aanroept:

AuthUserFile /path/to/htpasswd/file/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
AuthName "Password protected Area"

require valid-user

Ik zal nu dit bestand uit elkaar halen en uitleggen.

AuthUserFile /path/to/htpasswd/file/.htpasswd

Dit is de directory waar je .htpasswd file staat, het bestand waar je de usernames en wachtwoorden in opslaat. Dit verschilt onder UNIX en Windows, wanneer je Windows gebruikt, moet je een volledig pad met drive gebruiken, dus krijg je zoiets:

AuthUserFile "C:\Websites\Wachtwoorden\.htpasswd"

Verder naar de volgende regel:

AuthGroupFile /dev/null

Dit is de directory naar je "Group File". In je group file, staan de groepen en users die bij een bepaalde groep horen. In dit geval gebruik ik /dev/null, dit betekent dat ik geen group file heb. /dev/null is eigenlijk een UNIX pad (naar niets) maar kan hierin ook gebruikt worden in Windows.

AuthType Basic

De methode die gebruikt wordt voor de authenticatie. Dit kan of Basic zijn, of Digest. Ik moet toegeven dat ik niet precies weet wat "Digest" doet, maar als je Basic gebruikt, komt t altijd goed.

AuthName "Password protected Area"

De naam die je te zien krijgt in het window als je de directory aanroept. Wanneer dit dus meer dan 1 woord is, moet je het tussen aanhalingstekens zetten.

require valid-user

Hiermee zorg je ervoor dat elke user die in je .htpasswd file staat in kan loggen. Je kunt hier gebruik maken van de volgende opties:

  1. require user naam1 naam2 naam3
  2. require group groep1 groep2
  3. require valid-user

Nu heb je dus een .htaccess aangemaakt, hebt je directory beveildigd, maar zo kun je nog niet inloggen in de directory. Waarom niet? Omdat je nog geen wachtwoord file hebt aangemaakt, ik gebruik hier .htpasswd als wachtwoord file. Dit kan dus elke willekeurige naam zijn. Het programmaatje waarmee je wachtwoorden aanmaakt, zit ook bij Apache. Dat staat in de "bin" directory en heet "htpasswd".
Wanneer je voor het eerst een wachtwoord toevoegt, moet je de -c optie gebruiken om het wachtwoord bestand aan te maken. Dus aan de hand van het .htaccess bestand wat ik heb gebruikt in het voorbeeld doe je:

htpasswd -c /path/to/htpasswd/file/.htpasswd username

Dus je gebruikt hier het pad (en wachtwoord bestand) wat je in AuthUserFile hebt gebruikt. Als je dit runt, moet je nog 2 keer een wachtwoord invoeren. Hierna kun je je beveiligde directory aanroepen en testen.

Als je nu een user wilt toevoegen aan je bestaande wachtwoord, laat je gewoon de -c optie weg.

htpasswd /path/to/htpasswd/file/.htpasswd username

Ook kun je het zo doen:

htpasswd -c /path/to/htpasswd/file/.htpasswd username password

Dan hoef je niet 2 keer het wachtwoord in te toetsen, maar dan gebruikt htpasswd gewoon het wachtwoord wat je in de command line op hebt gegeven.

Nu moet de beveiliging helemaal werken.

Zie ook Beveiliging

URLs herschrijven

Zie Mod rewrite.

Veel voorkomende problemen

Via FTP zie ik mijn .htaccess bestand niet meer.

Filenamen die met een puntje beginnen worden door de meeste FTP programma's niet weergegeven omdat deze op de server vaak een speciale status hebben (hidden). Het lukt vaak wel om de file op de server te krijgen, en dan werkt hij ook, maar de file is vervolgens niet terug te zien in het FTP overzicht. Bekijk de opties van je FTP programma om te kijken of deze een optie heeft om die files toch te zien ("verborgen bestanden tonen"). Dat is bijvoorbeeld erg handig om de file van de server op te halen. Als je de file niet kunt zien is er een workaround mogelijk bij FTP programma's waarin je met de hand een commando kunt geven, zoals bij de Total Commander in de witte balk onder de fileoverzichten, dan type je daar de opdracht

RETR .htaccess

Let op de dubbele c en dubbele s in de filenaam.
De file verwijderen kan dan met

DEL .htaccess

Sommige editors zoals kladblok kunnen files niet opslaan zonder naam voor het puntje. geef dan een tijdelijke naam die je later verwijdert, of zet quotes om "htaccess".

500 Internal Server Error

Als je een fout maakt in een .htaccess file dan krijg je mogelijk voor alle pagina's binnen de directory de 500 Internal Server Error te zien. Haal de file weg of verbeter de fout.

Overkoepelende artikelen:
Inloggen wachtwoord vergeten? Aanmelden