File structuur:
htdocs/mvcstruct/
- app/
- public/
- | css/
- | img/
- | js/
- |.htacces
- |index.php

Inhoud .htaccess:
<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
RewriteBase /mvcstruct/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

Request URL: http://localhost:3000/mvcstruct/
Output:
Index of /mvcstruct
Parent Directory
app/
public/
OK, dat is volgens verwachting.

Request URL: http://localhost:3000/mvcstruct/public/
Output:
Hello World
OK, dat staat in index.php, prima.

Request URL: http://localhost:3000/mvcstruct/public/test.php
Output:
Not Found
The requested URL /mvcstruct/public/test.php was not found on this server.
Dit verwacht ik niet, wat doe ik verkeerd?
De file test.php zit niet in de map public; ik verwacht uitvoering van de RewriteRule en derhalve uitvoeren van index.php.
Wat doe ik verkeerd cq onvoldoende dan wel te veel?
Volgens mij niet. Dat gaat toch in de routing van je applicatie?
Enige wat .htaccess doet is een soort doorsturen.
Nou als je gelijk hebt, valt het mee.
Maar ik meen juist dat andere te hebben gelezen; en dat is niet gemakkelijk te begrijpen; en het kan ook zijn dat degene die het schreef, het ook niet goed wist.

En ja, het gaat in elk geval in de routing van de applicatie.

En ja, óók .htaccess moet zo'n werk doen, iedere keer opnieuw.

Iemand die er voor heeft gestudeerd mag het zeggen. Vooralsnog houd ik me bij .htaccess want ik weet niet beter.
Er is ook geen ander alternatief, je wilt immers alles requests doorsturen naar index.php, en dat gebeurt ook. Heb je een link naar dat artikel?
Als het om een fysieke sub-(sub-sub-)directory gaat, dan kijkt Apache ook in alle bovenliggende directories voor een .htaccess. Als je dus een paar lagen diep zit, dan betekent dat meerdere bestanden waar ie "doorheen moet ploegen".

Als het je eigen server is, en je kunt in de httpd.conf file editen (of conf/extra/httpd-vhosts.conf, of hoe het op jouw server ook ingestoken is), dan heeft dat verreweg de voorkeur.

Zie ook: https://httpd.apache.org/docs/2.4/howto/htaccess.html
Dat hele boom doorzoeken zal bedoeld zijn voor de situatie waar je een hele boom aan mappen hebt. Echte mappen.

En dan kan het voorkomen dat je in documentroot een .htaccess hebt, maar ook in /documentroot/scripts en in /documentroot/scripts/inloggen en in /documentroot/scripts/inloggen/queries/

en dan zal apache elk van die mappen de .htaccess gebruiken.

Maar nu heb je een andere situatie met maar 1 .htacces file. (in de documentroot).

En die doet niets als de file bestaat
en bestaat het path niet, dan wordt index.php aangesproken.

Dat is minimaal werk. En ook de enige manier om dit op te pakken
@Arien,
Nee, ik heb geen artikel; het is ook al vrij lang geleden dat ik dit heb gelezen.

@Rob,
Het is een remote host, daar mag ik met m'n vingers vanaf blijven.

[size=xsmall]Toevoeging op 08/10/2021 22:38:03:[/size]

@Ivo,
Je stelt me gerust, dank!

Reageren