Mod Rewrite met folder structuur
Ik heb voor mijn website de volgende structuur:
![Afbeelding Afbeelding](https://s13.postimg.org/z7e8rpoyv/folder_Structure.png)
In elke map zitten één of meerdere php bestanden die elk hun eigen type paramaters (wel of niet) kunnen hebben.
(PS: Foto is maar een voorbeeld, let niet op exacte naamgeving).
Open ik nu een pagina dan is dat als volgt (paar voorbeelden):
https://www.website.nl/?pagina=paginas/contact/bekijk.php
https://www.website.nl/?pagina=paginas/beheer/klanten/toevoegen.php?user=1&p_id=1838&c=3
https://www.website.nl/?pagina=paginas/producten/overicht.php?cat=1&subcat=3&sort=prijs&direction=asc&limi=100&bla=22
(dit zijn enkele voorbeelden. Zoals te zien zijn er een behoorlijk aantal verschillende mappen mogelijk met daarbij ook nog veel verschillende parameters.
Is dit om te zetten naar SEO vriendelijke urls?
Ik heb de volgende regel werkend, maar die staat er dus vast in. Ik heb dit liever niet aangezien ik voor elke mogelijke combinatie extra regels moet toevoegen. Is dit beter te doen?
Code (php)
1
2
2
RewriteEngine On
RewriteRule ^([0-9]+)$ /index.php?pagina=paginas/producten/bekijk&id=$1 [L]
RewriteRule ^([0-9]+)$ /index.php?pagina=paginas/producten/bekijk&id=$1 [L]
Bedankt alvast!
Ik doe doorgaans:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
RewriteEngine On
# als bestaat, dan gewoon de file tonen en niets rewriten...
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# de rest naar index.php
RewriteRule ^(.*)$ index.php [L,QSA]
# als bestaat, dan gewoon de file tonen en niets rewriten...
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# de rest naar index.php
RewriteRule ^(.*)$ index.php [L,QSA]
in index.php peuter ik dan de oorspronkelijke url uit elkaar (zie $_SERVER), en afhankelijk van de (doorgaans) eerste term wordt een controller (of zo je wilt een ander script) aangeroepen / geinclude)
Die weet zelf welke extra elementen er nog volgen.
bijvoorbeeld
/orders/edit/123
Dan wordt orders_control.php aangeroepen
Die zoekt de 2e term. Die is hier edit, dus kennelijk willen we 1 order bewerken. DUS hebben we een 3e parameter nodig (het orderid)
Maar
/orders/list zou gewoon een lisjt van alle orders ophalen.
Als een heel ander deel van je site eerst 4 parameters nodig heeft
/betalingen/ideal/maandelijks/2015 dan zoekt betalingen_control dat wel uit
/alg-voorwaarden/ doet niets verder
Daarmee voorkom je een heel oerwoud aan rewriterules die in de juiste volgorde moeten staan en elkaar niet moeten tegenwerken.