Hallo,

Ik ben op zoek naar een manier waarop ik in htaccess een if else structuur kan opzetten.
Wat ik probeer is wanneer geen van de RewriteRules wordt toegepast, error.php wordt weergegeven.

Dit is wat ik nu heb:


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^index$ index.php [L]

RewriteRule ^(.*)$ error.php [L]


Ik dacht dat wanneer "index" voldoet aan de RewriteRule, daarna niet verder wordt gekeken vanwege de L flag. Dit is echter niet het geval.

Ziet iemand de fout / wat ik moet doen om dit werkend te krijgen?

Alvast bedankt!
precies.

dus alleen als /index/ niet bestaat als map, dan kom je in index.php uit.

al het andere zou dus (ook als het wel bestaat) uit moeten komen in de error-pagina

---
Veel handiger is het, om alles wat niet bestaat naar index.php te leiden, en al daar uit te zoeken wat er moet gebeuren.

Misschien zelfs alle direct aangeroepen php files naar index.php te sturen.

Zelf zet ik alle php files buiten de document root behalve index.php
Die file zoekt uit wat er in de url stond en of hij dat begrijpt.
bijvoorbeeld /producten/list

zal in index.php leiden tot het aanroepen van de producten-control class.
Die zoekt vervolgens wat de volgende term in de url is.(list)
En dan zal hij aan de gang gaan om een lijst te tonen.
Staat er edit/12 dan zal hij de info van product 12 verzamelen en een edit-scherm tonen.

zo heb je altijd een zelfde soort ingang en kan de controller in kwestie zelf de rest van de url uitpluizen.
Dat voorkomt dat je in .htaccess gaat veronderstellen dat een url bestaat uit een string, slash, string, slash getal
danwel met een brei van 300 ondoorgrondelijke rewrite rules komt te zitten waarbij regel 39 en 153 strijdig blijken.

Reageren