Beste mensen,

Ik probeer iets heel simpels.
<?php
header('HTTP/1.0 404 Not Found');
?>
Maar wat krijg ik dan? Een gewone lege witte pagina. Wat ik graag zou willen is dat ik een melding krijg van apache. Bijvoorbeeld 't volgende:
Not Found

The requested URL /sdfdgewt.html was not found on this server.
--------------------------------------------------
Apache/2.0.55 (Ubuntu) PHP/5.1.2 Server at localhost Port 80


Als ik mijn response headers bekijk krijg ik 't volgende:

PHP:
Date: Fri, 25 Aug 2006 14:21:45 GMT
Server: Apache/2.0.55 (Ubuntu) PHP/5.1.2
X-Powered-By: PHP/5.1.2
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

404 Not Found


Apache:
Date: Fri, 25 Aug 2006 14:21:22 GMT
Server: Apache/2.0.55 (Ubuntu) PHP/5.1.2
Content-Length: 293
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

404 Not Found


Ik weet niet of 't probleem bij de server zit of bij de php code dus misschien dat deze topic beter onder webservers had kunnen staan.
Tuurlijk wel :S . Het is PHP. PHP is server side. Ik kan alles naar de client sturen wat ik wil. Ik kan alle soorten headers genereren van 200 OK tot 500 internal server error. De client krijgt deze 404 header ook correct aan! Wat NIET gebeurt is dat apache zijn default error file open gooit. Ik heb in mijn eerste post toch al de response headers van beide soorten files staan. Ze geven allebei een 404 header terug!

't probleem ligt bij apache. Ik moet op een of andere manier zorgen dat apache zijn 404 melding weergeeft. Volgensmij zoekt apache nu of de file bestaat zo ja dan voert ie die uit zo nee geeft ie zijn eigen error melding. Ik vermoed dat hij niet verder kijkt wat ik in mijn php script terug naar de client stuur.

Ik wil gewoon apache's error melding systeem triggeren. Op die manier kunnen ook custom HTTP error pages gemaakt worden.
Oke, next question, waarom wil je de error gegevens van apache in een php file zetten?

Bekijk anders het script is van 'de perfecte 404' o.i.d.
ahaa, I snap,

kun je dan niet beter in je php bestand kijken of de pagina bestaat met file_exists() , zo niet, geef een header refresh naar site.nl/bestaatniet
Die refresh zou kunnen maar dat is erg lelijk imo. Die pagina die die 404 header stuurt een custom error pagina laten includen is imo ook niet ideaal. Stel dat je de folder met 404 pagina's ooit wilt verplaatsen moet je overal die includes aan gaan passen.

Ik heb nog wat op google gezocht en op GoT maar geen oplossingen voor dit probleem. Dus misschien dat ik dan toch maar voor die laatse oplossing moet gaan en dan zorg ik wel dat ik overal een config include waarin 't pad naar de error pagina's staat.

Mocht iemand nog ideeen hebben hoor ik dat graag.
Owkee, die pagina zul je of je custom er in moeten hangen, of die van apache. Overigens kun je die met de server var signature en nog wat dergelijke ook zelf maken. De 404 header die je geeft is het belangrijkste, die zorgt dat browsers en dergelijke weten dat er iets fout is.

ik zal ff zoeken anders.

[edit]
Hieronder...
[/edit]


<?php header('HTTP/1.0 404 Not Found'); ?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL <?php echo $_SERVER['REQUEST_URI']; ?> was not found on this server.<P>
<HR>
<?php echo $_SERVER['SERVER_SIGNATURE']; ?>
</BODY></HTML>


[edit]
Of... voeg een foute include toe of, om op dezelfde host te blijven:
[/edit]


<?php virtual('errorpageplx'); ?>
Mhz ja. Ik denk dan toch dat ik maar op een of andere manier een custom pagina ga maken. Misschien dat ik dat 't beste via een class kan doen of zo. Dan blijven die error meldingen toch nog in 1 bestand zitten. En dat ik dan mbv htaccess die class aan roep.

Die virtual en dan een foute pagina includen zal ook niet zo mooi zijn omdat je dan die requested URL natuurlijk niet meer klopt :) . Naja ik zal er nog eens over nadenken. Die apache melding kun je vanuit php toch niet throw-en ;( .

Reageren