.htaccess-trucs

Wat is een .htaccess-bestand eigenlijk?

Webmasters kunnen met behulp van het configuratiebestand .htaccess (oftewel: de hypertext-toegang) mapgerelateerde regels opstellen op NCSA-compatibele webservers zoals de Apache HTTP Server. Zo kan er bijvoorbeeld worden vastgelegd welke gebruikers toegang hebben tot bepaalde bestanden. Automatische doorverwijzingen op een server inrichten is een ander goed voorbeeld van een goede .htaccess-hack.

Een .htaccess-bestand is een tekstbestand waarmee geautoriseerde gebruikers de configuratie van een NCSA-compatibele webserver kunnen beïnvloeden voor specifieke mappen (deze worden ook wel “directories” genoemd). Deze techniek werd in de jaren negentig uitgevonden voor de destijds toonaangevende webserver NCSA HTTPD en wordt vandaag de dag vooral toegepast op de veelgebruikte Apache HTTP Server. De werkwijze is gebaseerd op aansturing door een of meerdere configuratiebestanden, die 'httpd.conf' heten. Deze belangrijke configuratiebestanden zijn in de regel opgeslagen in de programmamappen van de webserver zelf en worden gedefinieerd door de serveradministrator. In dit bestand is onder andere vastgelegd of een gebruiker het recht krijgt om de serverconfiguratie te wijzigen met behulp van .htaccess-trucs. Als dit het geval is, kan een gebruiker .htaccess-bestanden voor iedere gewenste map aanmaken en bewerken, waardoor delen van de serverconfiguratie op mapniveau kunnen worden overschreven.

Iedere keer als de pagina wordt geopend, scant de webserver recursief alle bovenliggende mappen – het .htaccess-bestand van een submap overschrijft dus dat van een bovenliggende map of directory. Gegevens worden hierbij niet in de cache opgeslagen. Serverinstellingen die met een .htaccess-bestand worden geconfigureerd, zijn daarom geldig vanaf het moment waarop het .htaccess-bestand wordt opgeslagen in de map in kwestie, zonder dat de server opnieuw moet worden gestart. De schrijfwijze moet 100 procent correct zijn, want een onjuist geschreven .htaccess kan er zelfs toe leiden dat alle pagina’s op de complete server niet meer toegankelijk is. Maar als de .htaccess-trucs correct worden toegepast, kun je gebruikmaken van enkele erg handige functies om de webserver te beheren. Omdat deze snel kunnen worden omgezet en eenvoudig in de bestaande systeemstructuur kunnen worden ingebed, wordt ook vaak de aanduiding .htaccess-hacks gebruikt.


Zo maak je een .htaccess-bestand aan

Omdat .htaccess-bestanden zuivere tekstbestanden zijn, kunnen ze met iedere teksteditor worden aangemaakt en bewerkt. De handelwijze bij het aanmaken van de bestanden hangt af van de beschikbare toegang tot de webserver. Met Telnet- of SSH-toegang kunnen .htaccess-bestanden direct op de server worden aangemaakt en bewerkt. Als er alleen een FTP-toegang beschikbaar is - bij STRATO lees je overigens hoe je een FTP-server configureert - moet het bestand lokaal worden aangemaakt en vervolgens worden geüpload. Dat de naam met een punt begint, is gebruikelijk bij Unix-systemen. Bij deze systemen beginnen mapspecifieke configuratiebestanden immers altijd met een punt. Dat wijst erop dat ze 'verstopt' zijn, wat er bij het gebruik van een grafische FTP-client echter toe kan leiden dat het geüploade .htaccess-bestand verdwenen lijkt te zijn. Wil je iemand, bijvoorbeeld een andere beheerder, toegang geven tot je Unix-systeem, dan kan je de toegangsrechten wijzigen via chmod.

De punt vooraan zorgt bij het lokaal aanmaken van .htaccess-bestanden op Windows-systemen voor een probleem, dat echter snel kan worden opgelost. Om te voorkomen dat de editor automatisch het typische .txt achter de bestandsnaam plaatst, moet bij het opslaan het bestandstype 'Alle bestanden' worden geselecteerd. Als het .htaccess-bestand van dit gewenste commando is voorzien, moet het alleen nog in de doelmap worden geplaatst. Het bestand is dan direct geldig – ook voor alle submappen.


.htaccess-trucs

Server configureren met .htaccess-hacks

Alle gebruikers met de juiste toegangsrechten, hebben met .htaccess-bestanden de mogelijkheid om snel en ongecompliceerd de configuratie van de webserver te wijzigen. Ze kunnen bijvoorbeeld complete mappen beschermen tegen toegang door onbevoegden door middel van HTTP-authenticatie. Daarnaast kunnen er eigen foutpagina's of doorverwijzingen worden ingericht. Er zijn diverse .htaccess-tips en -tricks. De tien handigste worden hieronder kort toegelicht:


1. Alternatieve foutpagina's

Webservers tonen normaal gesproken een standaard HTML-bestand of een hard gecodeerde melding wanneer er een fout ontstaat bij het openen van de website. Deze foutmeldingen zijn vaak niet zo fraai en inventief, dus alles behalve gebruiksvriendelijk. Met behulp van .htaccess is het mogelijk om eigen uitwijkpagina's of -meldingen in te voeren, die bijvoorbeeld bij een webshop kunnen verwijzen naar vergelijkbare artikelen. Voor het invoegen van eigen foutpagina's dienen de volgende gegevens te worden toegevoegd aan .htaccess:

# Eigen foutmeldingen lokale opslaglocatie
ErrorDocument 404 /pad/404.html

Als de foutpagina zich boven de rootmap van de website of op een externe URL bevindt, kan ook de complete URL in het .htaccess-bestand, dat zich in dit geval in de rootmap moet bevinden, worden ingevoerd:

# Eigen foutmeldingen externe opslaglocatie
ErrorDocument 404 http://www.domein.tld/pad/404.html

2. Doorverwijzingen

.htaccess-bestanden worden ook veel gebruikt voor doorverwijzingen of redirects. Er kunnen bijvoorbeeld afzonderlijke bestanden binnen een website worden omgeleid of ook aanvragen worden doorverwezen naar een ander domein. Dat is vooral handig als de website verhuist. Als de volgende code wordt opgeslagen in de rootmap worden aanvragen aan het oorspronkelijke domein van de server omgeleid naar het nieuwe domein.

# Eenvoudige doorverwijzing
Redirect / http://www.nieuwe-domein.tld/

Afzonderlijke bestanden kunnen met dezelfde methode binnen een website worden omgeleid, als bijvoorbeeld de paginanaam is gewijzigd:

# Doorverwijzing van afzonderlijke bestanden
Redirect /oude-pagina.html nieuwe-pagina.html

3. Wachtwoordbeveiligde pagina’s en mappen

Wie geen uitgebreide inlogscripts met PHP wil schrijven, maar toch een beveiligde map of beveiligde bestanden op zijn webserver nodig heeft, kan in plaats daarvan .htaccess-trucs gebruiken om beveiligde mappen of pagina’s in te richten. Voor dit type wachtwoordbeveiliging is eerst een tweede bestand met de naam .htpasswd nodig, waarin de betreffende wachtwoorden worden opgeslagen. Deze mogen in Unix-systemen alleen versleuteld worden ingevoerd – hiervoor zijn online verschillende .htpasswd-generatoren te vinden. Beveiligde mappen kunnen als volgt worden aangemaakt:

# Eenvoudige wachtwoordbeveiliging met .htaccess
AuthName "Wachtwoordbeveiligde map of pagina"
AuthUserFile //.htpasswd
AuthPGAuthoritative Off
require user User1 User2 User3

Eerst wordt het .htpasswd met de gebruikersnamen én hun versleutelde wachtwoorden aangemaakt:

# .htpasswd-bestand voor gebruikersnamen en wachtwoorden
User1:duCmo1zxkKx6Y
User2:mou3IYjSLpGWI
User3:HGKS9XzDXXAXQ

Terwijl het .htpasswd-bestand vervolgens idealiter boven de rootmap wordt aangemaakt, moet het .htaccess-bestand zich juist in de map bevinden die moet worden beveiligd.


4. PHP Memory Limit verhogen

Het gebruik van PHP-toepassingen is gebonden aan een bepaalde Memory Limit (geheugenlimiet). Deze limiet bepaalt het maximale werkgeheugenverbruik dat alle gebruikte PHP-scripts op de server samen mogen veroorzaken. Met het volgende commando in het .htaccess-bestand kan de limiet worden verhoogd:

# PHP Memory Limit
php_value memory_limit 128M

De waarde 128M staat in dit geval voor een limiet van 128 megabyte. Er kunnen ook andere limieten worden ingesteld op basis van de geheugenbehoefte en servervoorwaarden.


5. De tijdzone van de webserver wijzigen

Als de webserver in de verkeerde tijdzone loopt, kan dat met de volgende invoer in het .htaccess-bestand worden aangepast:

# Tijdzone instellen
SetEnv TZ Europe/Amsterdam

6. IP-adressen blokkeren

Het is mogelijk om bepaalde IP-adressen of -ranges de toegang tot je website te ontzeggen. Met de juiste invoer in het .htaccess-bestand kun je zelfs alle IP-adressen uitsluiten en alleen toegang verlenen aan een beperkt aantal IP-adressen. Zo kan de inhoud van een bedrijfsintern intranet bijvoorbeeld alleen beschikbaar worden gesteld aan de eigen medewerkers. Het volgende commando omvat enkele mogelijke toegangsbeperkingen:

# Bestand voor het regelen van IP-bereiken
Order deny,allow
Deny from .aol.com
Deny from 192.168
Allow from 192.168.220.102

Met de invoer 'Order' wordt de interpretatievolgorde van de ingevoerde gegevens vastgelegd – de volgorde is daarbij niet van belang. De overige invoer laat de webserver weten dat alle gebruikers met .aol.com-kenmerk en alle gebruikers met het numerieke IP-adres in de range 192.168 worden uitgesloten van het gebruik van de website. Een uitzondering vormt daarbij de gebruiker met IP 192.168.220.102.


7. Omleiding van de website van HTTP naar HTTPS

Wie voor zijn domein een SSL-certificaat gebruikt, kan het domein met een .htaccess-commando omleiden naar de versleutelde HTTPS-aanvraag:

# Activeer HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ https://jouwdomein.tld/$1 [R=201, L]

8. Bestandstoegang via browser activeren

Met het volgende commando kan de mapinhoud worden weergegeven in de browser en als download worden aangeboden aan andere gebruikers:

# Geef mapinhoud weer
Options +Indexes

9. Hotlinking van afbeeldingen verhinderen

Hotlinking stelt een derde persoon in staat om media (voornamelijk foto's) die op een andere host zijn opgeslagen, te koppelen aan hun website. Zo ontstaat voor de eigenlijke eigenaar een hoger datavolume, waarop hij geen invloed heeft. Dankzij .htaccess-trucs is het mogelijk om het linken naar bepaalde bestandtypes van de eigen website met het volgende commando te blokkeren:

# Verhinder hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.jouw-webhosting-domein/.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ - [F]

10. Tekenset voor documenten vastleggen

Umlauttekens veroorzaken vaak problemen als er geen correcte tekencodering voor is aangegeven. Met het .htaccess-bestand kan per map precies worden vastgelegd welke tekencodering er moet worden gebruikt voor het betreffende documenttype. Het volgende commando bepaalt voor alle documenten de codering UTF-8:

# Tekencodering vastleggen
AddDefaultCharset utf-8

Als de codering alleen voor bepaalde documenttypes moet worden vastgelegd, wordt in het commando de betreffende bestandsextensie erachter geplaatst:

# Tekencodering voor bepaalde bestanden vastleggen
AddDefaultCharset utf-8 .css .htm .html .xhtml .php

.htaccess-trucs

.htaccess-trucs: praktisch en simpel toe te passen

De bovengenoemde tips en trucs om .htaccess-bestanden te gebruiken voor de configuratie van een server, zijn bedoeld om een idee te krijgen van de diverse functionele mogelijkheden van dit praktische bestand. Alle commando's worden immers direct opgevolgd door de webserver, zonder dat deze daarvoor opnieuw moet worden gestart.