Vriendelijke URL
Ik heb een link op mijn website: www.website.nl/leden?page=1&filter2=Array
alleen wil ik daar graag een url vriendelijke link van maken, maar hoe kan ik dat doen? Met bijv. htaccess oid?
Als ik www.website.nl/leden doe krijg ik geen lijst
alleen wil ik daar graag een url vriendelijke link van maken, maar hoe kan ik dat doen? Met bijv. htaccess oid?
Als ik www.website.nl/leden doe krijg ik geen lijst
Met .htaccess kan je inderdaad nette URL's (ook SEO-URL's genoemd) maken. mod_rewrite is de module die je hiervoor gebruikt. Zie ook: http://www.phptuts.nl/view/28/
Oke maar hoe doe ik dat dan met de filters die iemand kan kiezen? Ik heb nu:
RewriteRule ^leden/(.*) leden.php?page=$1
Ik heb nl. een mogelijkheid om te filters van het resultaat:
RewriteRule ^leden/(.*) leden.php?page=$1
Ik heb nl. een mogelijkheid om te filters van het resultaat:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<form action="/leden/1" method="GET" id="searchlist" name="filters">
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2289"> Utrecht
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2290"> Amsterdam
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2300"> Jongen
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2301"> Meisje
</form>
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2289"> Utrecht
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2290"> Amsterdam
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2300"> Jongen
<input type="checkbox" onclick="this.form.submit();" checked="checked" name="filter[]" value="2301"> Meisje
</form>
Code (php)
1
2
2
RewriteRule ^leden/(.*) leden.php?page=$1
RewriteRule ^leden/(.*)/(.*) leden.php?page=$1&filters=$2
RewriteRule ^leden/(.*)/(.*) leden.php?page=$1&filters=$2
Zoiets?
Stel: /leden/aap/noot/mies
Ariën's code zal in regel 1 herschrijven naar leden.php?page=aap/noot/mies
Daarom: de langste versie bovenaan zetten, of vereisen dat (.*) geen / mag bevatten.
Maar hoe dan ook krijg jemet deze opzet al heel snel te maken met tientallen rewrite rules, die met een beetje pech ook nog elkaar dwars zitten (bijvoorbeeld omdat "leden/10" en "beheerleden/10" op dezelfde rule matchen.) (in dit geval niet, vanwege de ^ ).
Handiger is het om alles te rewriten naar leden.php en in dat script een functie aan te roepen die op zoek gaat naar de inhoud van de url.
Dat is in php veel gemakkelijker te doen, en dan kun je ook uit de voeten met situaties waarbij deleten van een user bijvoorbeeld kan volstaan met 1 getal: leden/delete/10
en vrienden worden: leden/wordtvriend/10/15 weer een extra getal verwacht.
Nog algemener wordt het als je ook niet eens naar leden.php verwijst, maar naar 1 index.php die op basis van het eerste woord in de url (leden) al de controle doorgeeft aan de code die nu in leden.php staat)
Ariën's code zal in regel 1 herschrijven naar leden.php?page=aap/noot/mies
Daarom: de langste versie bovenaan zetten, of vereisen dat (.*) geen / mag bevatten.
Maar hoe dan ook krijg jemet deze opzet al heel snel te maken met tientallen rewrite rules, die met een beetje pech ook nog elkaar dwars zitten (bijvoorbeeld omdat "leden/10" en "beheerleden/10" op dezelfde rule matchen.) (in dit geval niet, vanwege de ^ ).
Handiger is het om alles te rewriten naar leden.php en in dat script een functie aan te roepen die op zoek gaat naar de inhoud van de url.
Dat is in php veel gemakkelijker te doen, en dan kun je ook uit de voeten met situaties waarbij deleten van een user bijvoorbeeld kan volstaan met 1 getal: leden/delete/10
en vrienden worden: leden/wordtvriend/10/15 weer een extra getal verwacht.
Nog algemener wordt het als je ook niet eens naar leden.php verwijst, maar naar 1 index.php die op basis van het eerste woord in de url (leden) al de controle doorgeeft aan de code die nu in leden.php staat)
Quote:
Handiger is het om alles te rewriten naar leden.php en in dat script een functie aan te roepen die op zoek gaat naar de inhoud van de url.
leden.php --> index.php
Een single point of entry in je applicatie is om een heleboel redenen (nog) handiger. Je hoeft deze dan bijvoorbeeld ook maar op één plaats te onderhouden / dicht te timmeren.
dat probeer ik in mijn laatste 2 regels aan te geven.
Maar om TO niet direct zijn hele applicatie om te laten bouwen, leek het me om te beginnen in leden.php het handigste. Zodra hij daar door heeft hoe eenvoudig het dan wordt, kan eea voor de hele site doorgevoerd worden.
Maar om TO niet direct zijn hele applicatie om te laten bouwen, leek het me om te beginnen in leden.php het handigste. Zodra hij daar door heeft hoe eenvoudig het dan wordt, kan eea voor de hele site doorgevoerd worden.
Fair enough, maar als je een site opbouwt uit enkel standalone scripts dan zou er toch heel snel een patroon moeten ontstaan waarbij je een heleboel elke keer op dezelfde manier doet? :)
Je zou het kunnen blijven herhalen: don't repeat yourself.
(see what I did there)
En als je dan een keer een wijziging daarin moet doorvoeren (x het aantal scripts) dan ben je hier ook snel van genezen. Misschien moet TS inderdaad eerst zijn vingers branden :).
Je zou het kunnen blijven herhalen: don't repeat yourself.
(see what I did there)
En als je dan een keer een wijziging daarin moet doorvoeren (x het aantal scripts) dan ben je hier ook snel van genezen. Misschien moet TS inderdaad eerst zijn vingers branden :).
Gewijzigd op 04/05/2016 15:46:16 door Thomas van den Heuvel




