Beste allemaal,
Ik kom er niet meer uit... òf ik ben het onmogelijke aan het proberen òf
ik doe iets heel erg fout...
Wie oh wie weet de oplossing ?
Wat ik wil doen is het volgende:
1. URL gaat naar de (Apache) server
2. Server leest htaccess en herschrijft indien nodig de URL.
Voorbeelden:
contact/ wordt herschreven naar index.php?id=contact
2004/07/24/titia/ wordt herschreven naar index.php?id=20040724titia
3. htaccess bevat ook errordoc directives zoals:
ErrorDocument 404 /index.php?id=error&e=404
4. index.php wordt aangeroepen (als resultaat van de rewrites)
5. index.php checkt in de achterliggende mysql db of een record met het
opgegeven id bestaat en geeft true/false achtig resultaat terug
6. als record niet bestaat, geef ik 404 headers terug aan de server,
anders uiteraard de correcte pagina:
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
exit;
7. 404 gaat terug naar de server en genereert de 404 zoals opgegeven in
het errordocument directive in htaccess en logt de error netjes in het
errorlog
Bovenstaande scenario "werkt" tot en met punt6 in zover dat hetgeen
opgegeven is, uitgevoerd wordt, maar nu komt natuurlijk de crux:
Nadat de 404 via punt (6) doorgegeven is, wordt er een blanco pagina
weergegeven en niet zoals ik zou verwachten mijn "nette" 404.
Punt 7 werkt dus niet zoals ik zou willen / zou verwachten.
Paar voorbeelden:
* Een niet bestaande pagina die *niet* via een rewrite loopt en dus
gelijk door htaccess correct wordt afgevangen met een 404:
http://www.alweereenfotowebsite.nl/testing123/
* Een bestaande pagina die *wel* via een rewrite loopt, geeft de juiste
pagina weer:
http://www.alweereenfotowebsite.nl/2004/07/24/titia/
* Een niet bestaande pagina die *wel* via een rewrite loopt, geeft een
blanco pagina:
http://www.alweereenfotowebsite.nl/test/
http://www.alweereenfotowebsite.nl/2004/07/24/test/
Uiteraard kan ik in het php script e.e.a. aanpassen zodat als het record
niet in de db gevonden wordt, de 404 header meegegeven wordt *en* de
gewenste errorpagina inhoud weergegeven wordt, maar op die manier wordt
de 404 niet als 404 gelogd in het error log en zijn de stats uiteraard
ook niet meer correct.
Weet iemand een manier om via php een 404 door te geven die daarna de in
htaccess opgegeven errordoc ophaalt en de fout netjes logt ?
Alle suggesties / potentiële oplossingen zijn zeer welkom !
Bij voorbaat dank,
Juliette

Likes:
![[php] htaccess rewrite rules in combinatie met php headers wijziging](https://www.webhostingtalk.nl/images/WHT_rd/misc/dT.png)
Quote