error 404 in index file
Waar ik naar opzoek ben is hoe ik een error 404 document in de index file kan laden.
Ik ben het stoeien geweest met htacces maar dan redirect hij naar de 404 file en include deze niet.
htacces bestand staat in de root map en de 404 file in root/inc/errors/404.php
Een manier om het bovenstaande te bereiken is door alle requests door te sturen naar de centrale "ingang" in jouw webapplicatie (single point of entry), dit is meestal index.php. Vervolgens inspecteer je of de oorspronkelijke aanroep een bekende/bestaande pagina was. Deze kun je opvragen via $_SERVER['REQUEST_URI']. Vervolgens genereer je op grond hiervan een response: de content van de bijbehorende pagina, of een 404 pagina, uiteraard met bijbehorende HTTP headers (200 OK, 404 Not Found et cetera).
Hoe je e.e.a. implementeert in PHP en alles doorstuurt naar index.php (ook weer met .htaccess) kan bijvoorbeeld als volgt.
Het bovenstaande is slechts het begin, vervolgens ga je met $path aan de slag. Daarmee dien je te bepalen of dat applicatiepad bestaat en dien je de bijbehorende content te serveren.
Uiteraard bestaan hier legio variaties op die min of meer hetzelfde doen. Het principe is altijd hetzelfde: je delegeert het afhandelen van het opvragen+serveren naar de webapplicatie zelf.
Gewijzigd op 06/06/2019 00:26:53 door Thomas van den Heuvel
Maar praktisch:
maar voor het gemak gebruik ik ook nog eens .htaccess:
Code (php)
1
2
3
4
2
3
4
ErrorDocument 401 /http_status_code?error=401
ErrorDocument 403 /http_status_code?error=403
ErrorDocument 404 /http_status_code?error=404
ErrorDocument 500 /http_status_code?error=500
ErrorDocument 403 /http_status_code?error=403
ErrorDocument 404 /http_status_code?error=404
ErrorDocument 500 /http_status_code?error=500
Als iemand bijvoorbeeld een directory wilt bekijken (403), of tegen een bokkende server (500) aanloopt, dan gaat dit ook door mijn frameworkje heen. De werkelijke URL zie je niet, omdat een ErrorDocument (apache) niet doorstuurt maar een soort van includeert.
Maar 404's gaan geloof ik sowieso al door mijn framework, dus die regel zou als ik mijn niet vergis al overbodig moeten zijn.
Gewijzigd op 06/06/2019 10:54:42 door - Ariën -
Dit is simpelweg een interne redirect in plaats van een externe, voor zover ik weet.
> Maar 404's gaan geloof ik sowieso al door mijn framework, dus die regel zou als ik mijn niet vergis al overbodig moeten zijn.
Er valt wel iets voor te zeggen om de headers op een enkele plaats op een uniforme manier te regelen, dus als je alles je code in kunt trekken verdient dat de voorkeur. Dit maakt je ook minder afhankelijk van webserver specifieke syntax/functionaliteit.
Hoewel het volgens mij zinniger is om http_response_code(...) te gebruiken. Volgens mij geeft deze meteen de juiste headers mee.
Dat is dan de implementatie.