URL rewriting

Databankgestuurde websites zijn voor zoekmachines niet altijd even toegankelijk. Dit komt omdat de pagina's niet altijd "echt bestaan", zoals bij een statische HTML-site. Als je een klassieke website bouwt met HTML, dan staat er in de map op server voor elke pagina ook effectief een HTML-bestand. 

Bij databankgestuurde websites is dit niet altijd het geval. Stel dat je een site hebt met een zoekformulier, dan wordt de HTML-pagina pas opgebouwd (met behulp van bijvoorbeeld PHP) op het moment dat een gebruiker een zoekterm intikt. Zoals je weet, vraag je dan niet enkel een "bestand" op, maar eveneens een "zoekterm" (query). 

Bijvoorbeeld: zoek.php?q=hond

Met een .htaccess-bestand is het mogelijk om zulke "slechtogende" links om te zetten in een meer leesbare waargave.

Bijvoorbeeld: zoek/hond

De techniek om adressen te gaan "herschrijven" tot een meer leesbare weergave, noem je "URL REWRITING".

Een .htaccess-bestand maken

Je kan een .htaccess niet zonder meer offline aanmaken. Dit komt er immers op neer om een bestand te maken waarvan de naam begint met een ".". Op een Mac OS-systeem is dat enkel weggelegd voor "verborgen bestanden". Als je een .htaccess-bestand aanmaakt op een Mac, zal het m.a.w. niet meer te zien zijn. 

Je kan het "offline" aanmaken door het bijvoorbeeld htaccess.txt te noemen. Je plaatst het vervolgens op FTP en je wijzigt daar de naam naar .htaccess.


Mogelijkheden

Met een .htaccess-bestand kan je heel wat bereiken naast URL rewriting:

  • Je kan een bezoeker doorsturen naar een andere pagina
  • Je kan een bepaalde map beveiligen met een wachtwoord zonder hiervoor PHP-code te moeten schrijven
  • Gebruikers blokkeren op basis van een IP-adres
  • Voorkomen dat een andere website foto's van jouw site "linkt"
  • Foutdocumenten instellen (voor het geval er iets misloopt met PHP of met de server)
  • ...

Risico's

Opgelet: Een .htaccess-bestand bewerken, is niet meteen weggelegd voor newbies. Een fout in dat bestand, kan je hele site doen vastlopen. Maar anderzijds kan je problemen ook snel oplossen door het bestand leeg te maken of het gewoon te verwijderen.

Voorbeelden

1. De extensie PHP verbergen

Als een pagina "contact.php" heet, bijvoorbeeld, dan kan je nu in je HTML-code nu <a href="contact">Ga naar contact</a> invoeren ipv <a href="contact.php">Ga naar contact</a>.

RewriteEngine On    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

2. Een map beveiligen met (een) wachtwoord(en)

Het is eveneens mogelijk om een map te beveiligen met wachtwoordtoegang. 

Opgelet: Hiervoor moet je nog een tweede bestand aanmaken nl. .htpasswd
AuthType Basic   
AuthName "Password Protected Area"   
AuthUserFile .htpasswd   
Require valid-user

In het bestand .htpasswd bewaar je "waardenparen" (combinatie gebruikersnaam:wachtwoord). Het wachtwoord moet op een correcte manier versleuteld worden.

Een voorbeeld:

test:dGRkPurkuWmW2

Op http://www.htaccesstools.com/htpasswd-generator/ vind je een tool om een wachtwoord te versleutelen voor gebruik in .htpasswd

3. Voorkomen dat een andere site jouw afbeeldingen linkt

In de onderstaande code moet je "uwdomeinnaam.be" vervangen door jouw domeinnaam.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?uwdomeinnaam.be [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

4. Redirect op basis van de systeemtaal van de bezoeker

Als je een meertalige website wil bouwen, dan maak je best een startpagina per taal. Met .htaccess is het mogelijk om de gebruiker automatisch door te sturen naar de gewenste pagina op basis van de systeemtaal van zijn/haar computersysteem.
RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://www.uwdomeinnaam.be/en.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://www.uwdomeinnaam.be/de.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://www.uwdomeinnaam.be/nl.php [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://www.uwdomeinnaam.be/fr.php [L,R=301]

5. Foutdocumenten

Op een server/website kan er wel wat fout lopen. Het kan bijvoorbeeld gebeuren dat Google een bepaalde pagina op je site linkt in de zoekresultaten, maar dat je die pagina al hebt verwijderd. Wanneer iemand op zo'n link in Google klikt, tovert je browser een niet bepaald gebruiksvriendelijke opmerking op het scherm van de gebruiker "Pagina niet gevonden".

Met .htaccess kan je al dit soort "problemen" en "fouten" opvangen. In de onderstaande code sturen we de gebruiker in geval van een probleem of serverfout door naar de pagina fout.html. Best stuur je de gebruiker in dat geval niet door naar een .php-bestand. Immers: als er iets misgaat met PHP op de server, heeft het weinig zin om de gebruiker in dat geval naar een php-bestand te sturen.

ErrorDocument 404 fout.html
ErrorDocument 403 fout.html
ErrorDocument 500 fout.html
ErrorDocument 401 fout.html

home