Mod_rewrite
We gaan beginnen met het eerste gedeelte: .htaccess. Dit ziet er moeilijk uit, maar is het zeker niet. Maak een nieuw bestand aan in je editor, gooi het helemaal leeg dat je echt een leeg bestandje hebt. Nu zet je bovenaan – om mod_rewrite te activeren:
Om de basis te stellen op de root, voegen we daar nog een regel aan toe:
Dat is alvast geopend. We willen natuurlijk dat bestaande bestanden gewoon te bereiken zijn. Dat doen we door een paar regels aan de .htaccess toe te voegen, zo ziet het er nu uit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
Je ziet nu: bestaande bestanden worden naar zichzelf doorgestuurd. Dat zorgt er alvast voor dat we daar niet mee in de knoop komen.
Het volgende is ook niet zo moeilijk. Nu willen we natuurlijk het deel achter je domeinnaam naar de normale parameters ?parameter=value¶meter2=value e.d. rewriten. Maar nu komt het: we willen het zo variabel en los mogelijk houden, en dat gaat niet als we iedere parameter weer apart gaan rewriten. Daarom doen we het zo; we rewriten alles achter het domein naar één parameter. Zo komt alles achter http://www.jouwdomein.nl/ dus in die parameter te zitten. Waarom? Dat zul je straks zien. Onze .htaccess gaat er nu zo uit zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
RewriteEngine On
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1 [L,QSA]
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1 [L,QSA]
We zijn nu klaar, sla dit bestandje op als .htaccess (meer niet! – vergeet niet om ‘all formats’ o.i.d. te selecteren, anders zou er .htaccess.php of zo kunnen komen te staan en dan werkt het niet!).
Edit:
Let er nu wel op, dat CSS-bestand en plaatjes (die door HTML geïnclude worden, dus niet door PHP!) het pad van de URL volgen. Ze zullen dus niet goed terecht komen als je plaatjes doodgewoon images/plaatje.png zijn. Hij plakt dat dan achter de URL en dat gaat niet werken. Daarom kun je het zo oplossen: /images/plaatje.png. Met de eerste / geef je aan dat er vanuit de root gewerkt moet worden. Wat je ook kunt doen is: http://www.jedomein.nl/images/plaatje.png - oftewel het absolute pad opgeven. Ik prefereer de eerste manier, maar dat is aan jou ;).
« vorige pagina | volgende pagina »