Jump to content

[TUT] mod_rewrite


Recommended Posts

Geplaatst:

Tutorial



mod_rewrite

Inleiding

Ik had in mijn tutorial over Random Signatures mod_rewrite al vluchtig behandeld, maar nu wil ik er even wat dieper op ingaan, omdat het simpelweg een hele krachtige en bruikbare functie is.

Heeft mijn webhost mod_rewrite?

Voordat we beginnen, moet je weten of jouw webhost mod_rewrite ondersteund. Dit omdat de meeste (gratis) webhosts dit niet doen. Hoe doe je dit? Vrij simpel. Maak eerst een tekstbestand met de volgende inhoud:

Options +FollowSymLinks
RewriteEngine On

Maak dan een map aan op jouw webserver, en noem deze ModRewriteTest. Zet daar dit tekstdocument in, en noem hem .htaccess. Dit moet je doen via jouw FTP-programma, Windows Explorer geeft een foutmelding. Browse dan naar

http://www.JOUWWEBSITE.nl/ModRewriteTest/

, waarbij je wel kan raden van JOUWWEBSITE.nl is ;). Nu kunnen er twee dingen gebeuren:

Niets: Gefeliciteerd, mod_rewrite werkt!

Internal Server Error (500): Helaas, geen mod_rewrite voor jou. Regel eerst eens een host die deze functie ondersteund! (Dit doen veel gratis hosts helaas niet.)

Andere manier (door Donald F. Duck)

Waar kan ik een werkend voorbeeld van mod_rewrite vinden?

Je kijkt er al naar. Kijk eens naar de adresbalk. Daar zal je zoiets vinden:

http://www.gtaforum.nl/topic/106706-tut-een-random-signature-welke-ook-werkt-op-het-forum/

Dit is eigenlijk een masker voor de volgende URL:

http://www.gtaforum.nl/index.php?showtopic=106706/

Zo zie je de eerste URL veel vriendelijker is, dit is ook waar de kracht van mod_rewrite in ligt.

Doorverwijzen naar een interne URL

We beginnen weer met een lege .htaccess. Hierin beginnen we met het "zeggen" dat we mod_rewrite gaan gebruiken:

RewriteEngine On

Daarna gaan we een doorverwijs-regel toevoegen:

RewriteRule ^topic showtopic.php

Ja, het dakje hoort erbij - Werken met variabelen volgt later in de tutorial

Wat doet deze code?

RewriteRule: Zeggen dat we een doorverwijs-regel toevoegen

^topic: De url die opgevraagd wordt...

showtopic.php: ...wordt doorverwezen naar deze URL

Doorverwijzen naar een externe URL

Dit werkt op dezelfde manier als een interne URL, alleen verwijs je dan naar een adres welke begint met http://. Wil je bij het vorige voorbeeld doorverwezen worden naar GTAForum, in plaats van showtopic.php, verander je de regel dus in dit:

RewriteRule ^topic http://www.gtaforum.nl/

Hier post ik geen verdere uitleg bij, omdat ik er van uit ga dat dit wel duidelijk is met de uitleg die hierboven staat ^^

Werken met variabelen

De allergrootste kracht van mod_rewrite ligt toch wel in het feit dat je ook dynamisch kan doorverwijzen. In de eerste regel (waarin de URL die de gebruiker intypt staat) gebruik je op elk variabel punt een (.*). Dit teken valt het beste nog te omschrijven als "boeit niet wat er staat, we sturen het door naar de tweede regel". In de tweede regel (de "echte" URL) gebruik je een dollarteken met daarachter een cijfer. Welk cijfer hier staat, is de hoeveelste (.*) uit de eerste URL je wilt gebruiken. We pakken er weer een voorbeeld bij. Stel, we hebben een script welke een topic opvraagt (topicnummer) en een uitlijninsnummer. We gaan er maar even vanuit dat deze variabelen via de URL verzonden zijn.

"Echte" URL:

showtopic.php?topicnr=100&uitlijning=1

URL die we willen maken:

topic/100/1/

Nu moeten we alleen nog de RewriteRule maken. Deze komt er zo uit te zien:

RewriteRule ^topic/(.*)/(.*)/ showtopic.php?topicnr=$1&uitlijning=$2

Ik hoop dat dit met de uitleg hierboven en het voorbeeld duidelijk genoeg is, mocht dit niet zo zijn, laat een berichtje achter :)

Mocht je trouwens 404-pagina's krijgen terwijl jouw RewriteRule wel klopt, kan het komen doordat er fouten zijn met een / aan het einde van de URL. Het beste kan je dan twee RewriteRules toevoegen, een met een / aan het einde en eentje zonder:

RewriteRule ^topic/(.*)/(.*)/ showtopic.php?topicnr=$1&uitlijning=$2
RewriteRule ^topic/(.*)/(.*) showtopic.php?topicnr=$1&uitlijning=$2

Veel succes met het maken van mooie URLs!

David22

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...