In het vorige artikel over onder andere zoekmachine vriendelijke URLs kwamen de URLs met verschillende parameters erin ter sprake:
“Zorg er dus voor dat je http://goedkope.kinderfietsen.nl/index.php?id=2&maat=16&model=giantXRC veranderd in http://goedkope.kinderfietsen.nl/2/16inch/giantXRC “
Maar hoe doe je dat nou? Dit kan allemaal heel simpel met het mod_rewrite pakket. Maak eerst een .htaccess bestand aan met een tekstverwerker zoals kladblok of notepad +. Neem een leeg document en vervolgens kies je de optie opslaan als en voert .htaccess in. Dan kan je beginnen met de code regeltjes invoegen. Eerst moet je de mod_rewrite aanzetten wat we doen via:
RewriteEngine On
Dan gaan we de omschrijvingsregels ingeven. Als we kijken naar de kinderfietsen webshop dan hebben we 3 variabelen achter de domeinnaam staan: 2, 16inch en giantXRC. Die variabelen moeten gewoon door index.php gebruikt kunnen worden. Daaruit volgt
RewriteRule ^/(.*)/(.*)/(.*)/ index.php?id=$1&maat=$2&model=$3
De $1, $2 en $3 komen overeen met de (.*). Dit is eigenlijk de basis en voldoet bij de meeste websites prima. Vaak treden er problemen op als men foto’s in mappen gaat zetten. Als er een foto staat in http://goedkope.kinderfietsen.nl/fotos/giant.jpg dan word dat omgeschreven naar http://goedkope.kinderfietsen.nl/index.php?id=fotos&maat=giant&model= en dat zorgt er dus heel leuk voor dat de foto’s niet worden weergegeven. Om dit te voorkomen voegen we een stukje code toe aan het .htaccess bestand dat eerst kijkt of een bestand bestaat. Als dat het geval is, hoeft er geen herschrijving plaats te vinden.
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
Het complete .htacces bestand ziet er dan alsvolgt uit:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^/(.*)/(.*)/(.*)/ index.php?id=$1&maat=$2&model=$3
Dit is nog lang niet alles wat je kan bewerkstelligen met de mod_rewrite engine. Meer informatie is te vinden op onderstaande websites:
- Wikipedia
- http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
- http://www.workingwith.me.uk/articles/scripting/mod_rewrite
Gerelateerde berichten:
vrijdag, 28 december 2007 om 11:34
De http://url.nl/2/5/Giant kan natuurlijk beter
http://url.nl/giant.html o.i.d. is natuurlijk een koud kunstje met .htaccess. Je kunt het zo mooi maken als je zelf wilt. De vraag is echter of hoe lang het nog duurt dat Google nep HTML pagina’s weer minder gaat bezoeken dan echt HTML pagina’s, zoals dat eerder was met de dynamische URLs.
woensdag, 15 oktober 2008 om 3:25
Werkt goed! eindelijk een tut die goed is!
donderdag, 6 november 2008 om 12:05
een klein vraagje. nadat ik het htacces bestand heb gemaakt, hoe moet ik dan linken.
met: index.php?id=2&maat=16
of: index/2/16
donderdag, 6 november 2008 om 9:21
Hallo Thomas,
Met de tweede optie natuurlijk, die staat toch het mooiste en meest simpel?
zondag, 31 januari 2010 om 7:42
thanks, very useful information. I have been looking for something like this for a long time.
dinsdag, 23 februari 2010 om 9:37
GEWELDIGE WEBSITE !
vrijdag, 5 maart 2010 om 2:03
Ik ben al even aan het zoeken naar antwoorden, maar ik kom er niet helemaal uit. Ik zou graag URL:www.DreamsAndWishes.nl/cor_en_danielle willen laten redirecten naar de bestaande webpagina www.DreamsAndWishes.nl/cor_en_danielle.HTML
Oftewel ik zou alleen de .html willen laten vervallen.
Hoe doe ik dit dan?
Alvast bedankt,
groeten,
Inge
p.s. mijn website is heel simpel in HTML gemaakt dus ik gebruik (nog) geen CMS a la drouple of Joomla
vrijdag, 5 maart 2010 om 4:19
Hallo Inge,
Ik heb het niet uitgeprobeerd, maar ik denk dat het volgende wel werkt:
RewriteRule ^(.*)? $1.html [L]
maandag, 24 mei 2010 om 5:57
Hallo, ik las deze tutorial, heel fijn dat het werkt!
Ik heb echter een vraagje,
http://www.pservice.be/joeke/index/125/ =
http://www.pservice.be/joeke/index.php?menu_id=125
Wanneer menu_id gelijk is aan 125 komt er “het werkt” te staan
Hoe moet ik strings uit de url halen om het bovenste te verwezenlijke met de nieuwe link: http://www.pservice.be/joeke/index/125/
Groetjes
Jeroen
donderdag, 10 juni 2010 om 8:44
Excuus voor de late reactie, maar beter laat dan nooit:
Hartelijk dank Jan Willem, ik ga het direct uitproberen!
Groeten,
Inge
donderdag, 8 juli 2010 om 8:03
Als de nieuwe links zijn geindexeerd moet er nog steeds de 301 rewrite code in blijven staan waarom is het niet mogelijk om dit in de google webmaster tools aan te geven.?