Htaccess
Inhoud
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:
- AuthConfig
- FileInfo
- Indexes
- Limit
- Options
- All
- 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:
- require user naam1 naam2 naam3
- require group groep1 groep2
- 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:
