Vergeef me de titel, om het echt duidelijk te maken is de volgende uitleg nodig.

Ik wil een url herschrijven als volgt:
http://www.domein.nl/admin/login

naar: http://www.domein.nl/admin_index.php?page=admin/login

Dit lukt me wel met deze rewrite:
RewriteRule ^(admin)/([a-zA-Z]+)/? admin_index.php?page=$1/$2

Alleen nu wil ik ook dat als iemand naar http://www.domein.nl/admin gaat, dit wordt omgeschreven naar http://www.domein.nl/admin_index.php?page=admin/home. En daar gaat het mis. Dit kan op zich eenvoudig met
RewriteRule ^(admin)/? admin_index.php?page=$1/home
Maar dan worden ALLE admin pagina's daar naartoe gedirigeert. Dat is natuurlijk niet de bedoeling. Dit zou alleen moeten gebeuren als de eerste regel niet geldt.

Hoe kan ik er dus voor zorgen dat de tweede regel, de eerste niet overruled? (of alternatief, kunnen de twee regels ook in 1 regel gevangen worden?)
Niemand die het antwoord weet? Dan bij deze de (een?) oplossing die bij mij nu werkt:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(admin)/([a-zA-Z]{1,}) admin_index.php?page=$1/$2 [L]
RewriteRule ^(admin)/? admin_index.php?page=$1/home [L]
Sorry Erwin, had dit topic niet gezien.

Waarom gebruik je niet gewoon $? (niet getest overigens, zou wel moeten werken)

Voorbeeldje:

RewriteRule ^(admin)/?$ admin_index.php?page=$1/home
RewriteRule ^(admin)/([a-z-A-Z]+)/? admin_index.php?page=$1/$2
Omdat ik nog niet alle ins en outs ken van de mod rewrite engine blijkbaar.... Maar het werkt inderdaad wel.
De $ geeft het eind van de string aan, de ^ het begin.
Die $ had ik inderdaad eerder moeten weten...

Overigens bleek een ander probleem van mij te zijn dat ik niet doorhad dat bij een rewrite er in feite een redirect plaatsvindt, waardoor na de rewrite, de procedure nogmaals herhaald wordt. Als je dus een url herschrijft naar een andere url, ga je nogmaals door die rewrite heen en daar kwam ik vast te zitten. De eerdere rewrite werd overschreven en zo kwam ik altijd op dezelfde url uit.

Omdat ik echter nog andere rewrites nodig heb in dezelfde module, heb ik die eerste drie regels ook nodig (die ervoor zorgen dat als de huidige url naar en bestaande file verwijzen de rewrite niet wordt doorlopen).

Reageren