Hoe maak ik mijn website password protected via .htaccess
en apache?
Om te beginnen zijn er minstens twee bestanden nodig: een .htaccess
en een .htpasswd
(dat niet noodzakelijk .htpasswd
hoeft te heten, maar dat laten we even buiten beschouwing).
In het .htaccess
bestand staat het volgende:
AuthUserFile /pad/naar/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
Require valid-user
Waarbij
/pad/naar/.htpasswd
verwijst naar de locatie van uw .htpasswd
bestand (dit is een absoluut path, en kan iets zijn zoals /opt/www/uwnaam/web/www.uwsite.be/.htpasswd
)
valid-user
om het even welke user (gebruiker) is die u hebt aangemaakt in dat .htpasswd
bestand
Een .htpasswd
bestand is –net zoals het .htaccess
bestand– een eenvoudig tekstbestand, met daarin een gebruikersnaam en een (geëncrypteerd) paswoord. Voor de gebruiker ’test’, met als paswoord ’test’ bevat dat bestand één lijn met daarop test:aS8AbzZUiBZ6Y
Om zo’n paswoord aan te maken bestaan overigens een aantal online tools. (Het is overigens best mogelijk dat uw hosting provider dat proces voor u geautomatiseerd heeft.)
Uploaden naar de root directory van uw website, en voilà, uw ganse site is paswoord beveiligd.
Nu komt the fun part™: wanneer iemand niet over de noodzakelijke credentials beschikt, komt die terecht op een weinigzeggende foutmeldingspagina: 401 not authorized
(cfr Status Code Definitions). Via de apache ErrorDocument
directive, kunnen we die foutmeldingspagina aanpassen.
Om een eigen 401 pagina aan te maken, voegen we een (zesde) lijn toe aan ons .htaccess
bestand:
AuthUserFile /pad/naar/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
Require valid-user
ErrorDocument 401 /errordocs/401.htm
/errordocs
is gewoon een subdirectory in onze webroot, die we ook kunnen bereiken via de browser: http://www.uwsite.be/errordocs/
, of voor die 401 pagina: http://www.uwsite.be/errordocs/401.htm
Die pagina is een eenvoudig HTML bestand, net zoals (waarschijnlijk) de andere pagina’s op uw site. Het zou er als volgt kunnen uitzien:
<html>
<head>
<title>uwsite.be</title>
</head>
<body>
<p><strong>sorry!</strong><br />
<strong>you are not authorized to view this document</strong></p>
</body>
</html>
Edoch! U zal merken dat, wanneer u probeert toegang te verkrijgen tot de site zonder opgave van een correcte gebruikersnaam en het bijbehorende passwoord, u deze pagina niet te zien krijgt. Het probleem is als volgt: door in de webroot het .htaccess
bestand te plaatsen, hebben wij de ganse site afgeschermd, dus ook de subdirectory /errordocs
. Concreet betekent dit dat je, om http://www.uwsite.be/errordocs/401.htm
te kunnen bekijken, net zo goed een paswoord moet ingeven als voor de rest van de site. Niet echt nuttig.
De oplossing is eenvoudig. Binnen de subdirectory /errordocs
plaatsen we gewoon een nieuw .htaccess
bestand, met daarin slechts één lijn:
Satisfy Any
Ziedaar: basic password protection in vier bestandjes: .htpasswd
, .htaccess
, /errordocs/.htaccess
en /errordocs/401.htm
. Hopelijk bent u er iets mee.