URLs herschrijven met mod_rewrite in .htaccess bestand

SEO Tips

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:

Trefwoord:         

Gerelateerde berichten:
  • Seo Tips
  • Onpage Zoekmachine Optimalisatie voor (Wordpress) weblogs: haal het beste uit uw artikelen!
  • Pagina titels en zoekmachine vriendelijke URLs – SEO Tips deel 2
  • SEO - Duplicate content: de meest gemaakte en afgestrafte fout
  • Bobbink SEO Tips – Een serie artikelen over zoekmachine optimalisatie


  • 15 reacties op “URLs herschrijven met mod_rewrite in .htaccess bestand”

    1. Gratis tag Zegt:

      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.

    2. hans Zegt:

      Werkt goed! eindelijk een tut die goed is!

    3. Thomas Zegt:

      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

    4. Bobbink Zegt:

      Hallo Thomas,

      Met de tweede optie natuurlijk, die staat toch het mooiste en meest simpel?

    5. Large Hamster Cage Zegt:

      thanks, very useful information. I have been looking for something like this for a long time.

    6. Oussama Zegt:

      GEWELDIGE WEBSITE !

    7. Inge Zegt:

      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

    8. Jan-Willem Zegt:

      Hallo Inge,

      Ik heb het niet uitgeprobeerd, maar ik denk dat het volgende wel werkt:

      RewriteRule ^(.*)? $1.html [L]

    9. Jeroen Zegt:

      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

    10. Inge Zegt:

      Excuus voor de late reactie, maar beter laat dan nooit:

      Hartelijk dank Jan Willem, ik ga het direct uitproberen!

      Groeten,
      Inge

    11. Casinos Zegt:

      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.?

    12. Ben Zegt:

      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

    13. Bobbink Zegt:

      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.

    14. Ben Zegt:

      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

    15. Ben Zegt:

      Is er eigenlijk een manier om de H1 tag te pakken van een pagina en die in de url te krijgen via een .htacces?

    Laat een reactie achter

    Berichten RSS