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.?
maandag, 28 november 2011 om 6:21
Hoi,
Allereerst de vraag: Is het nu in 2011 nog steeds zinvol om een url te rewriten zoals hierboven in het artikel uit 2007 omschreven?
Ik zag recent nog wel een bekende auto websites boven aan ranken op een longtail zoekopdracht van mij middels een rewritten url, vandaar dat ik me er toch wat in ben gaan verdiepen. ( ik ben nog steeds een leek )
Ik heb een vergelijkings site met meer dan 5 miljoen producten. De url ziet er na een zoekopdracht heel lelijk uit. b.v: http://sellzoo.nl/meubels/index.php?case=search&ps=stoel&sv=1 en ik vraag me af of ik met mijn 5 miljoen dynamisch gegenereerde pagina’s niet beter rank als de url er zo uit zou zien: http://sellzoo.nl/meubels/stoel ( vandaar ook mijn eerste vraag )
Om resultaten snel te laten laden heb ik gebruik gemaakt van verschillende databases.
Als er dan word gezocht in de database b.v “meubels” en “producten”.
een zoekopdracht naar een stoel ziet het er zo uit:
http://sellzoo.nl/meubels/index.php?case=search&ps=stoel&sv=1
Als er meerdere zoek termen tegelijk worden ingevoerd dan krijg je weer een + tussen alle producten.
Voorbeeld in de database producten naar types foto toestellen.
http://sellzoo.nl/producten/index.php?case=search&ps=DMC-TZ20+S3100+DMC-FZ45+DMC-FZ100+SX30+DSC-W530+DMC-FS35+SZ-30MR+S9100+&sv=1
Mijn vraag hierover is, waar plaats ik het htacces bestand en maakt het uit dat ik met meerdere msql databases werk?
Kan je me op weg helpen met hoe de htacces er ongeveer uit zou moeten zien en waar ik rekening mee moet houden?
Groet Ben
maandag, 28 november 2011 om 10:17
Hallo Ben,
Dit is zeker nog zin vol. Ik kan je hierbij wel helpen. Meerdere databases is geen enkel probleem, dit staat los van de redirects via htaccess. Eén van de problemen die hierbij wel op gaat spelen, is het probleem met ‘duplicate content’. Ik zal via de e-mail contact met je opnemen.
dinsdag, 29 november 2011 om 6:33
Hoi,
Ik heb het volgende .htacces regel gemaakt:
RewriteRule ^/(.*)/(.*)/(.*)/ index.php?case=$1&ps=$2&sv=$3
Als ik het goed heb zou de url:
http://sellzoo.nl/producten/index.php?case=search&ps=S9100&sv=1
dan moeten worden omgezet naar:
http://sellzoo.nl/producten/search/S9100/1
Maar de url blijft het zelfde als ik
http://sellzoo.nl/producten/index.php?case=search&ps=S9100&sv=1
Plak in de browser.
Ook direct het plakken van
http://sellzoo.nl/producten/search/S9100/1
Geeft geen pagina.
Ik heb het htacces bestand in de main derectory geplaatst en ook in de map producten maar beide geven geen effect.
Doe ik iets fout?
Groet,
Ben
dinsdag, 29 november 2011 om 6:34
Is er eigenlijk een manier om de H1 tag te pakken van een pagina en die in de url te krijgen via een .htacces?