Zoekmachine vriendelijke urls

De mod_rewrite module is bij uitstek geschikt om zoekmachine vriendelijke urls te maken. Naast het feit dat zulk soort urls goed te interpreteren zijn door zoekmachine bots, zien ze er ook een stuk vriendelijker uit.

Wat zijn zoekmachine vriendelijke urls nu eigenlijk? Dat is een vraag die ik allereerst eens zal beantwoorden aan de hand van een voorbeeld. We zijn allemaal wel eens urls van het volgende type tegen gekomen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://www.jouwsite.nl/tutorials.php?id=10&page=4&replies=20

De zoekmachine vriendelijke variant van deze url zou als volgt kunnen zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://www.jouwsite.nl/tutorials/10/4/20/

Dat ziet er al een stuk beter uit nietwaar? En naast dat ze er een stuk beter uitzien, hebben deze urls ook nog als voorbeeld dat deze te begrijpen zijn door zoekmachine bots. Daardoor kan de content van je hele site geindexeerd worden en blijven ze niet op de index pagina steken.

Dit alles is mogelijke met de mod_rewrite module. Laten we om te beginnen eerst eens naar een eenvouiger voorbeeld kijken.

Voorbeeld 4: Zoekmachine vriendelijke url
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^tutorials/(.*)/$ tutorials.php?id=$1

In dit voorbeeld wordt bijvoorbeeld de url 'http://www.jouwsite.nl/tutorials/12/' omgeschreven naar 'http://www.jouwsite.nl/tutorials.php?id=12'. We hoeven nu niet meer de naam van de GET variabele id in de url op te nemen, het is genoeg om alle het id daar te plaatsen.

Hoe gaat dat nu als we meerdere GET variabelen hebben? Stel dat we de van de volgende urls allemaal zoekmachine vriendelijke urls zouden willen hebben:

http://www.jouwsite.nl/tutorials.php?id=10&page=4&replies=20
http://www.jouwsite.nl/tutorials.php?id=10&page=4
http://www.jouwsite.nl/tutorials.php?id=10

Van de onderste url zouden we voorbeeld 4 kunnen gebruiken, maar voor de andere twee moeten we nog 2 RewriteRules toepassen.

Voorbeeld 5: Meerdere GET variabelen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
RewriteEngine On
RewriteBase /

RewriteRule ^tutorials/(.*)/(.*)/(.*)/$ tutorials.php?id=$1&page=$2&replies=$3
RewriteRule ^tutorials/(.*)/(.*)/$ tutorials.php?id=$1&page=$2
RewriteRule ^tutorials/(.*)/$ tutorials.php?id=$1

Je ziet dat ik het lijstje met urls niet voor niets in die volgorde heb geplaatst, zo komen ze namelijk ook in de .htaccess te staan. Zorg er altijd voor dat je eerst de regel van de url met de meeste GET variabelen plaatst en dan pas regels voor urls met minder GET variabelen. De url met veel GET variabelen voldoet namelijk ook aan de reguliere expressie voor eentje met minder variabelen en zo voorkom je dus dat de verkeerde RewriteRule uitgevoerd wordt.

Wat er in dit voorbeeld gebeurt, is dat Apache door de regels zal gaan lopen en zodra er een regel is waaraan de url matched, zal de regel uitgevoerd worden. Vervolgens zal apache verder gaan naar de volgende regels. In de reguliere expressies zien we telkens (.*) staan, dit is een uitdrukking die alle tekens matched. Verder zien we in het laatste gedeelte van de regel $1, $2 en $3 staan. Deze uitdrukkingen verwijzen naar respectievelijk het eerste, tweede en derde voorkomen van (.*) in de reguliere expressie.

Een puntje waar we wel even op moeten letten, zijn de urls waarmee we onze website nu aanroepen. Je ziet dat de urls in alle reguliere expressies eindigen met een /. Dat betekent dus ook dat we alle links op onze website die naar zo'n pagina verwijzen, met een / moeten laten eindigen. Doe je dit niet, dan zul je een foutmelding krijgen dat de pagina niet gevonden kan worden. Verderop in deze tutorial in het gedeelte over FLAGS, zullen we nog een andere oplossing voor dit probleem zien.

Dit is eigenlijk alles omtrent het maken van zoekmachine vriendelijke urls. We zien dat het handig is om van tevoren al na te denken over alle GET variabelen die we in een url gebruiken.

« Lees de omschrijving en reacties

Inhoudsopgave

  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

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.