Soms is het nodig dat bepaalde delen van een site alleen voor een beperkte groep bezoekers toegankelijk is. De NSCA en Apache webserver-programma's bieden hiervoor een goed middel: .htaccess.
Htaccess is echter meer dan alleen toegangs-restrictie: het is ook mogelijk om bijvoorbeeld alleen bepaalde bestanden uit te sluiten van weergave in de browser van de bezoeker, of om je eigen errordocumenten (404: "Not found", 500: "Internal server error") te maken.
Deze FAQ bevat een aantal veelgestelde .htaccess vragen in de
nieuwsgroep
nl.internet.www.ontwerp.
We gaan er vooral van uit dat er wordt gebruik gemaakt van de Apache
webserver, niet alleen vanwege onze gebrekkige kennis van NSCA, maar ook
omdat Apache het meest gebruikte webserver-programma is.
Opmerkingen, suggesties en kritiek zijn welkom!
De beheerder van de server moet in het configuratie bestand access.conf of httpd.conf de volgende regel aanpassen:
AllowOverride None
moet worden:
AllowOverride All
Vervolgens moet Apache herstart worden, onder Linux/Unix met het commando:
apachectl graceful
Een beschrijving van dit commando en van alle command line opties
vind je in de manual page van apachectl.
Plaats in de betreffende directory een bestand met de naam .htaccess, en de volgende regels:
AuthUserFile /een/directory/buiten/de/wwwroot/.htpasswd
AuthGroupFile /dev/null
AuthName "Mijn Geheime Webstek"
AuthType Basic
<Limit GET POST>
require marieke
</Limit>
Je kan dit .htaccess aanmaken met bijvoorbeeld vi of notepad. Het is een gewoon tekst bestand, dus het kan met jouw favoriete tekst editor.
Met het programma htpasswd kan je een wachtwoord bestand
aanmaken, waar de .htaccess uit leest.
Dit doe je als volgt:
htpasswd -c .htpasswd marieke
Als je meer gebruikers wilt toevoegen, kan je dus volstaan met:
htpasswd .htpasswd joke
Let op dat je deze gebruiker ook aan de .htaccess toevoegt, bij het <Limit> gedeelte.
De .htaccess werkt recursief, m.a.w. de onderliggende directories worden ook door de .htaccess beschermt.
In .htaccess kun je verschillende beveiligingsmethoden activeren. De meest bekende is HTTP Basic Authentication. Deze biedt enige mate van afscherming, maar omdat het password leesbaar over het Internet wordt getransporteerd geldt deze methode niet als erg veilig. Om een password-afscherming veilig te maken zou je gebruik moeten maken van mod_ssl of Apache-SSL.
Nog enkele opmerkingen:
-rw-r--r--
en als eigenaar jij zelf.Simpel, maar je moet het even weten. Zet het volgende in een .htaccess:
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
Veelvoorkomende HTTP fout-codes zijn:
Een compleet overzicht van alle HTTP status codes vindt je in de HTTP-standaard.
Extra leuk: maak van de errorpagina een PHP of ASP pagina, die de webmaster per e-mail op de hoogte stelt van de foutmelding, de naam van de gezochte pagina, de referer, enzovoort.
Een default document is het document dat wordt getoond als je alleen
een url in je browser geeft.
Als je bijvoorbeeld
http://come.to/niwo ingeeft krijg je het bestand "index.htm" te
zien.
Voeg aan de .htaccess de volgende regel toe:
DirectoryIndex index.php4 index.html
...zorgt ervoor dat index.php4 je standaard document is.
Soms wil je voorkomen dat een bepaald bestand door de bezoekers van je
website direkt bekeken kan worden, bijvoorbeeld als je logingegevens van
een database in een include bestand stopt.
Met de volgende regels kan je voorkomen dat bezoekers het bestand kunnen
bekijken:
<Files *.inc>
Order allow,deny
Deny from all
</Files>
.htaccess is een configuratiefile dat door de web server Apache wordt gelezen.
Enkele bijzonderheden van .htaccess:
AllowOverride All
in httpd.conf..htaccess
, inclusief het puntje, maar de provider/systeembeheerder
kan de naam veranderen met de configuratie
AccessFileName
in httpd.conf. Let op dat op Linux/Unix een filenaam die begint met een punt standaard niet verschijnt
met het ls
commando. Gebruik ls -a
.In de Apache documentatie:
htpasswd is normaal gesproken op de (Linux/Unix) server aanwezig. Als je htpasswd intypt en je krijgt bash: htpasswd: command not found, probeer dan het programma op te sporen met het commando:
find / -name htpasswd -print 2>/dev/null
Vaak is dat /usr/bin/htpasswd maar soms ook een ander pad. Je kan dan dus:
/usr/bin/htpasswd -c .htpasswd marieke
doen om het wachtwoordbestand aan te maken. Het wachtwoord bestand wordt dan aangemaakt in de directory waar je op dat moment staat.
Je kunt ook op je eigen systeem een .htpassword aanmaken en deze uploaden naar de server. Je hebt dan wel een implementatie van het htpasswd programma nodig voor jouw eigen besturingssysteem.
Ook bestaan er verschillende htpasswd gateways die een htpasswd file voor je kunnen maken:
Hoe je zelf zoiets kan maken met php3 staat op: mbn.dk/rod/htpasswd.php
Met dank aan Niels Leenheer.