login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Webserver


Gegevens:
Geschreven door:
twopeak
Moeilijkheidsgraad:
Normaal
Hits:
14448
Punten:
Aantal punten:
 (3.25)
Aantal stemmen:
8
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (4)
 

Tutorial:

htaccess bestanden

Intro
Centraal vs per directory
Custom Error pages
Redirection
Handige directives
IP adressen (niet) toelaten
Authenticatie
Sources


intro

.htaccess bestanden worden gebruikt om per directory de configuratie te veranderen.

De .htaccess bestanden zijn eigen aan de Apache server, ze zullen dus niet door andere server-software ondersteund worden. De bestanden worden door de server geïnterpreteerd op het moment dat je een bestand (of directory) opent. De bezoekers van je site zullen dit bestand nooit te zien krijgen (bestandspermisies 644 om zeker te zijn)

Het is niet zeker dat je hoster het gebruik van .htaccess bestanden toelaat (of Apache draait) vraag daarom best aan je hoster of het toegelaten is en welke directives (welke "opdrachten") toegelaten zijn of niet toegelaten zijn.

Deze tutorial gaat enkel de belangrijkste overkoepelen, de andere kun je vinden in de resources onderaan!

Centraal vs per directory

Je mag deze bestanden enkel gebruiken als je niet aan de algemene configuratie van je server kan (httpd.conf), het is de bedoeling dat je in je configuratie schrijft waar er welke verandering doorgevoerd moeten worden (alles gecentraliseerd).

Indien je ze in je httpd.conf bestand gebruikt, maak je per directory een "container" aan:

<Directory "C:/Program Files/Apache Group/Apache/htdocs">


</Directory>

Deze container vul je dan met de configuratie.

Kun je niet aan het httpd.conf bestand, dan maak je gewoon een bestand aan dat .htaccess noemt, in de directory waar hij van toepassing op is; en vul het bestand met je configuratie.

De bestanden worden per directory geïnterpreteerd door Apache, hoe dieper je in de tree gaat, hoe belangrijker ze worden. Als je bv 1 directory ontoegankelijk maakt voor iedereen, maar een subdirectory toegangkelijk maakt, dan zal je 1e directory wel ontoegankelijk zijn, maar de subdir zal wel toegankelijk.

Om je .htaccess bestanden niet zichtbaar te maken voeg je in het httpd.conf bestand
<Files .htaccess>
order allow,deny
deny from all
</Files>

toe, dan zullen de .htaccess bestanden nooit aan bezoekers getoond worden!

Custom Error pages

Je kunt de locatie van de fout-paginas veranderen. De meest bekende error pagina's zijn
401 - Authorization Required
400 - Bad request
403 - Forbidden
500 - Internal Server Error
404 - Wrong page/file not found

ErrorDocument errornumber /file.html

indien je errornumber verandert naar de fout, dan zal deze lijn ervoor zorgen dat als de fout optreed het bestand file.html (uit de document root; de "/" duidt daarop) getoond zal worden.

Een voorbeeld hiervan is
ErrorDocument 404 /foutpaginas/file_not_found.html

Dit zal dus uit de root de subdir "foutpaginas" openen en het bestand file_not_found.html tonen indien de gevraagde pagina niet bestaat.
Je kunt ook een php bestand aanmaken, waarin je in de $_SERVER array informatie kunt vinden over de onbestaande paginanaam. Dit laat je toe een script te maken met bv. zoekresultaten over dit onderwerp!

Redirection

Dit is een van de zeer handige dingen die je kunt doen.
Stel je verwijdert een bestand, maar veel mensen linken nog naar dit bestand, kun je de server zeggen van je bezoekers door te verwijzen naar een ander bestand (het nieuwe bestand).

Redirect /origin/file.html /desination/file.html

dus wanneer je een bestand in de subdir /origin/ hebt (de eerste "/" duid aan dat het de root van de server is)
Zul je verwezen worden naar het bestand in /destination/
Je kunt dit ook gebruiken om mensen naar andere sites te verwijzen (stel je hebt een nieuw domeinnaam maar je hebt de twee domeinnamen niet aan dezelfde hoster kunnen koppelen, kun je dit gebruiken)

Handige directives

Options -Indexes

zal de inhoud van een directory niet tonen (indien je geen indexbestand hebt, zal apache standaard de inhoud van de dir tonen)

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm

dit zal de server vertellen van niet het standaard index te gebruiken maar de lijst (door 1 spatie verdeeld) bestanden te zoeken, en die te tonen.
maw. als je dit invult met
DirectoryIndex blub.html informatie.html gek.php

dan zal de server niet index.html tonen wanneer je dit zou verwachten, maar gaat hij zoeken of blub.html bestaat, indien ja, toont hij hem, indien nee gaat hij op zoek naar het volgende bestand (informatie.html) enzovoorts.

IP adressen (niet) toelaten

deny from 000.000.000.000


Deze regel zal een bepaald ip adres blokkeren, als je maar bepaalde delen van het ip adres gebruikt, zal je alle adressen hierbinnen blokkeren. (vb. 10.0.1. zal alle adressen van je thuisnetwerk blokkeren)

Hetzelfde geldt voor het toelaten van bepaalde mensen:

allow from 000.000.000.000


Indien je een bepaalde directory voor alle bezoekers wilt afschermen, maar dat je scripts er wel nog toegang tot hebben gebruik je:

deny from all


Dit kan praktisch zijn voor bestanden die je include!

Authenticatie

Dit is nog een zeer belangrijke 'feature' is de authenticatie via .htaccess bestanden. Het is ook een van de iets meer geavanceerdere, wordt niet depresief als het niet direct werkt.

Ik geef jullie nu de "rauwe" methode om dit te doen, maar indien je deze methode gebruikt, kan je ook een script schrijven dat een mooiere inlog-formulier heeft, door headers te sturen.

Voor dit heb je ten eerste een extra bestand nodige, namelijk het ".htpasswd" bestand.
Je maakt dit bestand aan en vult het met namen en geëncrypteerde paswoorden (voor unix kan je de utility "htpasswd" gebruiken; op andere platformen zul je een script hiervoor moeten maken!)
In php encrypteer je de paswoorden met
<?
$crypt_paswoord
= crypt($passwoord,CRYPT_STD_DES);
?>


dan krijg je een bestand dat er zo uitziet:

naam:FDEQ45fdsfFD45Ee45fe
naam2:FEA8ae4GEE458910

(paswoorden zijn fictief in dit geval)
Dan moet je je .htaccess bestand editeren.

Voeg er deze lijnen aan toe
AuthUserFile /usr/local/you/safedir/.htpasswd
AuthName EnterPassword
AuthType Basic
Require user naam

De eerste lijn is het volle server pad naar je .htpasswd bestand
De tweede lijn is de naam van je "realm" dit is ook het bericht dat in het paswoord boxje zal komen
Het gebruik van de basic (http) authentication is normaal
De laatste lijn is de lijn die zegt wie mag inloggen, je kunt ofwel dit restricten tot een of meerdere gebruikers, of gewoon zeggen dat alle gebruikers van je .htaccess bestand toegang krijgen. In dit laatste geval zeg je Require valid-user


Nu blijft er nog een zeer belangrijke vraag over, nl. hoe log je uit
Wel spijtig genoeg: niet!
zo simpel is het. Afhangende van de browser is het programma afsluiten genoeg, maar je kan het niet vertrouwen!

Al bij al, raad ik jullie aan dit NIET te gebruiken, het is niet erg veilig of praktisch!

hot-linking van prentjes vermijden

De rewrite engine van Apache is zo krachtig dat ik hem zelf maar half begrijp, maar indien je ervoor wilt zorgen dat mensen je prentjes niet meer op hun site kunnen tonen gebruik je deze code:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ - [F]

waarbij je mydomain.com verandert in jouw domein!

sources

Deze bronnen heb ik gebruikt om deze tut samen te stellen:
http://www.javascriptkit.com/howto/htaccess.shtml
http://apache-server.com/tutorials/ATusing-htaccess.html
http://www.apache.org
http://httpd.apache.org/docs/howto/auth.html
http://www.hotscripts.com/Detailed/21319.html (voor een password generator script)

top




« Vorige tutorial : [HTTP]Responses en Requests Volgende tutorial : phpMyAdmin beveiligen »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.019s