login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[opgelost]MOD rewrite uitzonderingen

Offline Dark_Paul - 18/10/2006 13:31 (laatste wijziging 18/10/2006 14:41)
Avatar van Dark_PaulPHP ver gevorderde Hej,

Ik heb wat probleempjes met mn MOD-rewrite. Ik heb nu zo dat als je naar pagina.php gaat, dat wordt omgezet in ?page=pagina
Ik heb nog niet getest of dat werkt voor een verder construcie als pagina.php?actie=blaat omzetten naar ?page=pagina&actie=blaat, maar daar verwacht ik geen problemen in.
Mijn probleem is, dat als ik bestanden los op wil vragen, dat gaat niet. Alle pagina's die geïnclude worden, heten <naam>.inc.php. Nou had ik in mijn MOD-rewrite gezet, dat ie die moest laten staan. Ook wil ik in de mod rewrite linken naar index.php?page=pagina. Als ik dat doe dan wordt index.php ook weer omgezet in ?page=index.
Weet iemand hoe ik mijn RewriteRules aan moet passen?
Dit is mijn .htaccess op 't moment:
  1. RewriteEngine On
  2. RewriteRule index.php index.php
  3. RewriteRule (.*)\.inc\.php $1.inc.php
  4. RewriteRule (.*)\.php\?(.*) ?page=$1&$2
  5. RewriteRule (.*)\.php ?page=$1

3 antwoorden

Gesponsorde links
Offline Thomas - 18/10/2006 13:44 (laatste wijziging 18/10/2006 13:48)
Avatar van Thomas Moderator De volgorde van je RewriteRules is belangrijk.
URL's kunnen, als deze achtereenvolgens aan meerdere RewriteRule-condities voldoen, meerdere keren herschreven worden.

Met de flag [L] achter je RewriteRule kun je aangeven dat, wanneer aan de RewriteRule conditie is voldaan (en de URL dus is herschreven), dat dit de Laatste RewriteRule is die moet worden uitgevoerd.

Meestal werk je dus van de meest specifieke RewriteRule toe naar de meest algemene RewriteRule, en elke rule eindigt met [L].

Er is één speciale RewriteRule: "-", dit houdt zoveel in als "skip", m.a.w. herschrijf niets.

Als je bestanden die niet herschreven mogen worden bovenaan zet in je RewriteRule-lijst met deze herschrijfregel, gevolgd door [L], zullen deze bestanden verder ongemoeid blijven:

  1. # afblijven.php mag niet herschreven worden!
  2. RewriteRule afblijven.php - [L]
  3. # meer bestanden die niet herschreven mogen worden op dezelfde wijze
  4. ...
  5.  
  6. # rest van de regels hier, van specifiek naar algemeen
  7. ...
Offline Dark_Paul - 18/10/2006 14:41
Avatar van Dark_Paul PHP ver gevorderde Bedankt FangorN, dat is de oplossing.
Zo ziet ie er nu dus uit:
  1. RewriteEngine On
  2. RewriteRule index.php index.php [L]
  3. RewriteRule (.*)\.inc\.php - [L]
  4. RewriteRule (.*)\.php\?(.*) index.php?page=$1&$2
  5. RewriteRule (.*)\.php index.php?page=$1

en dat werkt!
Bedankt!
Offline Thomas - 18/10/2006 14:57 (laatste wijziging 18/10/2006 15:00)
Avatar van Thomas Moderator Het kan nog korter .

Volgens mij kan het ook als volgt:
  1. RewriteEngine On
  2. RewriteRule (index|.inc).php$ - [L]
  3. RewriteRule (.*).php(\?(.*))? index.php?page=$1&$3 [L]


Weet niet zeker of je punten hoeft te escapen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s