Mod Rewrite
Mod rewrite is module in Apache en geeft ons de mogelijkheid om bepaalde url's te herschrijven. Dit alles gebeurd zonder dat de bezoeker hier iets van merkt. Om deze module te laten werken moet jouw server dit ondersteunen. Dit kun je heel eenvoudig nagaan door een nieuwe PHP pagina aan te maken en de volgende code in te geven.
<?
phpinfo();
?>
Ga dan na of tussen de Loaded Modules mod_rewrite staat. Is dit zo dan kun je gebruik maken van Mod Rewrite. Is dit niet zo dan moet ik je teleurstellen. Je kan eventueel wel contact opnemen met je host.

In dit artikel ga ik me beperken tot het maken van zoekmachine vriendlijke URL's. Maar mod_rewrite biedt echter veel meer mogelijkheden. Je kunt er immers Redirects meemaken etc.
We nemen deze url als voorbeeld
http://mijnwebsite.be/index.php?page=tutorials&subcat=php&tutorial=123
Om deze URL zoekmachine vriendelijk te maken zullen we hem zo moeten krijgen.
http://mijnwebsite.be/tutorials/php/123/
of om het helemaal te maken
http://mijnwebsite.be/tutorials/php/123/tutorial_naam.html
Merk op dat de laatste URL de .html extentie heeft. Dit is niet erg, mod_rewrite zal deze url herschrijven dat de .html weg is en naar jouw php pagina linkt.
Maak een nieuw bestand aan en zorg dat je het bij het saven opslaat als .htaccess .
RewriteEngine On
RewriteRule ^tutorials/php/([0-9]+)/tutorial_naam.html index.php?page=tutorials&subcat=php&tutorial=$1
Het ([0-9]+) gedeelte wordt doorgegeven aan de oude url op de plaats waar $1 staat. Dit command betekend dat enkel cijfers zijn toegelaten. Door het plus-teken mag 1 of meerdere keren vorige cijfers voorkomen (dus alle natuurlijke getallen). We kunnen ook meerdere parameters doorgeven.
RewriteEngine On
RewriteRule ^tutorials/(.*)/([0-9]+)/tutorial_naam.html index.php?page=tutorials&subcat=$1&tutorial=$2
Om problemen te voorkomen moet je als volgt te werk gaan.
RewriteEngine On
RewriteRule ^index/(.*)/(.*)/(.*)/ index.php?page=$1&cat=$2&subcat=$3
RewriteRule ^index/(.*)/(.*)/ index.php?page=$1&cat=$2
RewriteRule ^index/(.*)/ index.php?page=$1
Controleren of Mod_rewrite aanstaat
<?
phpinfo();
?>
Ga dan na of tussen de Loaded Modules mod_rewrite staat. Is dit zo dan kun je gebruik maken van Mod Rewrite. Is dit niet zo dan moet ik je teleurstellen. Je kan eventueel wel contact opnemen met je host.

Voordelen van deze module
- Met deze module kan je de URL's van jouw website zoekmachine vriendelijk maken. Dit houdt in dat er maximaal 1 parameter in de URL voorkomt. Het voordeel is dat je dit kan realiseren zonder grote ingrepen te hoeven doen in je code.
- De URL's zullen beter onthouden worden door bezoekers en alles ziet er netter uit.
Het bestand
In dit artikel ga ik me beperken tot het maken van zoekmachine vriendlijke URL's. Maar mod_rewrite biedt echter veel meer mogelijkheden. Je kunt er immers Redirects meemaken etc.
We nemen deze url als voorbeeld
http://mijnwebsite.be/index.php?page=tutorials&subcat=php&tutorial=123
Om deze URL zoekmachine vriendelijk te maken zullen we hem zo moeten krijgen.
http://mijnwebsite.be/tutorials/php/123/
of om het helemaal te maken
http://mijnwebsite.be/tutorials/php/123/tutorial_naam.html
Merk op dat de laatste URL de .html extentie heeft. Dit is niet erg, mod_rewrite zal deze url herschrijven dat de .html weg is en naar jouw php pagina linkt.
Maak een nieuw bestand aan en zorg dat je het bij het saven opslaat als .htaccess .
RewriteEngine On
RewriteRule ^tutorials/php/([0-9]+)/tutorial_naam.html index.php?page=tutorials&subcat=php&tutorial=$1
Het ([0-9]+) gedeelte wordt doorgegeven aan de oude url op de plaats waar $1 staat. Dit command betekend dat enkel cijfers zijn toegelaten. Door het plus-teken mag 1 of meerdere keren vorige cijfers voorkomen (dus alle natuurlijke getallen). We kunnen ook meerdere parameters doorgeven.
RewriteEngine On
RewriteRule ^tutorials/(.*)/([0-9]+)/tutorial_naam.html index.php?page=tutorials&subcat=$1&tutorial=$2
Om problemen te voorkomen moet je als volgt te werk gaan.
De URL met het meeste aantal parameters plaats je eerst. Dit omdat een URL met meerdere parameters ook kan doorgaan voor een URL met 1 parameter. Dit zal 404 error pagina's veroorzaken. Maak je .htaccess bestand in deze volgorde en niet in omgekeerde volgorde.
RewriteEngine On
RewriteRule ^index/(.*)/(.*)/(.*)/ index.php?page=$1&cat=$2&subcat=$3
RewriteRule ^index/(.*)/(.*)/ index.php?page=$1&cat=$2
RewriteRule ^index/(.*)/ index.php?page=$1
Er bestaat tevens een Cheat sheet voor Mod Rewrite. Hierop staan andere manieren om URL's te herschrijven en er staat ook op wat je nog allemaal met Mod_rewrite kan.
Er zijn nog geen reacties op dit artikel.
Om op dit artikel te reageren dient u een account aan te maken.



Artikel details
Share

Soortgelijke artikels