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!
>> Wat ik probeer is wanneer geen van de RewriteRules wordt toegepast, error.php wordt weergegeven.

Ik snap 'm niet. Die laatste regel hoort daar toch niet?

Als het geen bestand of directory is, dan gaat ie naar index.php, en als het wel een bestand of directory is laat ie die dus zien. Meer keuzes heb je niet, dus die error.php kan ook niet getriggerd worden.

Ik snap niet wat je wil bereiken.
Als het een bestaand bestand of mapje is, moet 'ie daar naartoe gaan, is het /index, dan moet 'ie naar index.php gaan, is het iets anders, dan moet 'ie naar error.php gaan.
>> is het iets anders, dan moet 'ie naar error.php gaan.

Het is geen bestand ... het is geen map => index.php

Het is wel een bestand of map => toon bestand of map

Iets anders is er niet, en dus is je error.php overbodig.

Snap je?
En wat gebeurt er als je 'ozzie' aanroept?

Geen map, geen bestand en geen index.....
Dan moet dus error.php worden aangeroepen. :P
Maar wat doet ie dan?
Aha ... dan had ik het verkeerd begrepen ... ik dacht dat alles naar index.php moest.

En als je het dan zo doet:

RewriteRule !^index$ error.php [L]
Waarom laat je de applicatie zelf niet bepalen of iets een "error" is?

Oftewel, stuur alles door naar index.php, en inspecteer daar $_SERVER['REQUEST_URI'].

Als je dadelijk besluit dat andere pagina's ook toegankelijk moeten zijn, moet je je mogelijk opnieuw in allerlei bochten wringen en zul je hoogstwaarschijnlijk ook je .htaccess bestand opnieuw moeten aanpassen.

Last but not least creëer je nu een tweede "ingang" in je applicatie (error.php). Straks heb je tig van dit soort pagina's. Mogelijk hebben deze alle includes en/of een zekere layout. Wanneer je hier verschillende standalone bestanden voor hebt dan dupliceer je het werk voor het serveren van die (web)pagina's. Althans, ik ga er vanuit dat je uiteindelijk volledige (en kloppende) HTML-documenten uitspuugt?

Anyhoo, zorg gewoon dat je één voordeur hebt in je applicatie en niet allerlei zij- en achterdeuren.
Als het geen file Is
Als het ook geen map Is

Dan herschrijf je iets dat begint met index en daarachter niets tot index.php

De rest zou altijd naar error.php gaan
Overigens zijn de RewriteConditions enkel van toepassing op de eerst(volgend)e RewriteRule.

De tweede RewriteRule heeft dus in principe géén RewriteConditions.

Reageren