Mod Rewrite

  1. Inleiding
  2. Vereiste instellingen
  3. Basis van Mod Rewrite
  4. Zoekmachine vriendelijke urls
  5. Flags in een RewriteRule
  6. Voorwaarden stellen met RewriteCond
  7. Slotwoord en referenties
  8. Reacties op deze tutorial

Basis van Mod Rewrite

Om deze basis van het gebruik van de mod_rewrite modulen uit te leggen, zal ik het voorbeeld van het doorsturen van oude urls naar nieuwe adressen nemen. Maar voordat we daarmee beginnen, kijken we eerst eens hoe we nu eigenlijk de module zelf kunnen gebruiken.

Allereerst moeten we Apache natuurljk kunnen vertellen welke acties uitgevoerd moeten worden. Daarvoor hebben we twee opties tot onze beschikking: een .htaccess bestand of aanpassingen in de httpd.conf. Aangezien de meeste webhosts geen toegang geven tot de httpd.conf zal ik me beperken tot het werken met een .htaccess bestand.

Als je geen idee hebt wat een .htaccess bestand is of hoe je er een aan moet maken, kijk dan eens naar deze tutorial.

Het begin van elke rewrite opdracht is het aanzetten van de rewrite engine om. Daartoe voegen we de volgende regel toe aan onze .htaccess:
Code
1
RewriteEngine On

Nu de rewrite engine ingeschakeld is, kunnen we beginnen met rewriten.

Voorbeeld 2: Het doorsturen van pagina's
Code
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule oud.php nieuw.php

Dit is het meest basale voorbeeld van het gebruik van de mod_rewrite module. Allereerst zien we het inschakelen van de rewrite engine met RewriteEngine On. Vervolgens gebruiken we RewriteBase / om aan te geven dat we de root van onze website willen gebruiken als basis voor rewrite opdrachten.

De belangrijkste regel uit dit voorbeeldje is de laatste regel. Een RewriteRule geeft aan welke actie nou precies ondernomen moet worden. In dit geval wordt oud.php herschreven naar nieuw.php en wordt de inhoud van nieuw.php getoond. Merk op dat je hier als gebruiker helemaal niets van ziet, in de url blijft gewoon oud.php staan.

De syntax van een RewriteRule is altijd als volgt:
Code
1
RewriteRule PATTERN DESTINATION [FLAGS]

In voorbeeld 2 was old.php dus de waarde voor PATTERN en new.php de waarde voor DESTINATION. Over de optionele FLAGS komen we later in deze tutorial te spreken.

Een handige cheat sheet voor het gebruik van Mod Rewrite is die van ILoveJackDaniels.com. In de rest van deze tutorial zal ik regelmatig naar deze sheet verwijzen.

Als PATTERN in de mod rewrite syntax is het ook mogelijk om een reguliere expressie te gebruiken. Dit is bijvoorbeeld handig als we meerdere bestanden tegelijk willen matchen.

Voorbeeld 3: Pagina's uit een directory doorverwijzen
Code
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^oude_map/(.*)$ nieuwe_map/$1

Wat er met deze RewriteRule gebeurt is dat van alle bestanden en onderliggende mappen in oude_map het pad herschreven wordt en oude_map vervangen wordt door nieuwe_map. Gevolg is dus dat de inhoud uit de nieuwe map geladen wordt terwijl de url nog naar de oude map verwijst. Dit is dus erg handig als je een map een keer hernoemd hebt.

In dit voorbeeld gebruiken we een reguliere expressie om alle bestanden in een bepaalde map aan te geven. Voor een uitleg over reguliere expressies zou je deze tutorial kunnen bekijken.

Ook het reguliere expressie gedeelte van de Mod Rewrite Cheat Sheet kan in dit geval een handig geheugensteuntje zijn:
Afbeelding

Vorige Volgende