Mod Rewrite met folder structuur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shamrock Modelbouw

Shamrock Modelbouw

22/10/2016 13:23:47
Quote Anchor link
Goedemiddag,

Ik heb voor mijn website de volgende structuur:

Afbeelding

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine On
RewriteRule ^([0-9]+)$ /index.php?pagina=paginas/producten/bekijk&id=$1 [L]


Bedankt alvast!
 
PHP hulp

PHP hulp

19/04/2024 10:19:00
 
Ivo P

Ivo P

23/10/2016 20:49:38
Quote Anchor link
jouw url zou volgens [0-9] dus alleen uit cijfers mogen bestaan?

Ik doe doorgaans:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]


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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.