Echte 404
Beste mensen,
Ik probeer iets heel simpels.
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:
Als ik mijn response headers bekijk krijg ik 't volgende:
PHP:
Apache:
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.
Ik probeer iets heel simpels.
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:
Code (php)
1
2
3
4
5
2
3
4
5
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
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:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
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
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:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
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
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.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Die error geeft Apache zelf. Hoef je niks voor te doen.
Ja maar als ik PHP dus een 404 laat genereren krijg ik geen melding maar een blanko pagina. Maar als ik de HTTP headers dan bekijk krijg ik wel degelijk een 404 terug.
waarom een 404 maken met php, dat doet apache zelf wel, zoals SanThe al zei....
Volgens mij wil Roy vanuit PHP de error pagina van Apache weergeven
Ja inderdaad. Op die manier kan ik straks ook een eigen 404 pagina er aan koppelen. Nu krijgt de gebruiker een blanko pagina te zien waar totaal niet van duidelijk is wat 't is.
edit: Ik zal wat meer uitleg geven. Ik ben bezig met een gallery script en dat zal bestaan uit pagina.php?map=mapnaam&id=foto_id
Nu wil ik dit met htaccess mooier maken.
images/mapnaam/foto_id/fotonaam.jpg
Om het dan compleet te maken en dus min of meer te verbergen dat ik php gebruik wil ik een 404 pagina genereren als een afbeelding niet bestaat. Je roept dus wel altijd een bestaande pagina aan (pagina.php) maar de afbeelding hoeft niet persee te bestaan. Vandaar de 404.
edit: Ik zal wat meer uitleg geven. Ik ben bezig met een gallery script en dat zal bestaan uit pagina.php?map=mapnaam&id=foto_id
Nu wil ik dit met htaccess mooier maken.
images/mapnaam/foto_id/fotonaam.jpg
Om het dan compleet te maken en dus min of meer te verbergen dat ik php gebruik wil ik een 404 pagina genereren als een afbeelding niet bestaat. Je roept dus wel altijd een bestaande pagina aan (pagina.php) maar de afbeelding hoeft niet persee te bestaan. Vandaar de 404.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Nee volgensmij snap jij nog niet echt wat ik bedoel.
Ik heb een php script. Het laad afbeelding uit de database en geeft die weer. Heel simpel.
Mocht een afbeelding niet bestaan dan geef ik een 404 header. 't leek me logisch dat ik als bezoeker dan ook 404 pagina zou kijgen waar met koeie letters 404 op staat. Echter is 't zo dat je alleen een blanko pagina krijgt.
http://62.131.240.91/index.php
Wat ik wil is dat ik een error pagina krijg:
http://62.131.240.91/asdfghfqasdfg/
edit: Die blanko pagina stuurt dus weldelijk een 404 header naar de client. Dit kun je ook checken met een programma / Firefox webdev toolbar.
Ik heb een php script. Het laad afbeelding uit de database en geeft die weer. Heel simpel.
Mocht een afbeelding niet bestaan dan geef ik een 404 header. 't leek me logisch dat ik als bezoeker dan ook 404 pagina zou kijgen waar met koeie letters 404 op staat. Echter is 't zo dat je alleen een blanko pagina krijgt.
http://62.131.240.91/index.php
Wat ik wil is dat ik een error pagina krijg:
http://62.131.240.91/asdfghfqasdfg/
edit: Die blanko pagina stuurt dus weldelijk een 404 header naar de client. Dit kun je ook checken met een programma / Firefox webdev toolbar.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Nee dat werkt nog steeds niet. Die pagina wordt geplaatst ipv de apache error. Ik krijg helemaal geen apache error.
http://62.131.240.91/index.php
Hier staat enkel 't volgende in.
http://62.131.240.91/asdfghfqasdfg/
Deze pagina bestaat niet -> apache error = custom 404
http://62.131.240.91/index.php
Hier staat enkel 't volgende in.
http://62.131.240.91/asdfghfqasdfg/
Deze pagina bestaat niet -> apache error = custom 404
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Wat jij doet kan nooit werken.
Want als jij op een pagina die bestaat een header zet dat de pagina niet bestaat. Dus dan zal er geen error komen.
Want als jij op een pagina die bestaat een header zet dat de pagina niet bestaat. Dus dan zal er geen error komen.
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.
'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.
Bekijk anders het script is van 'de perfecte 404' o.i.d.
@PHP Newbie
Hij wil dat als je zo adres hebt:
http://webmakerij.markei.nl/index.php?directory=scripts&bestand=ditbestandbestaatniet
Je de 404 krijgt van Apache.
Ik zelf heb het opgelost door gewoon een redirect te doen naar mijn custom error pages.
Maar hij heeft geen/wil nog geen custom error pages en wil dus de default van apache laten zien.
Hij wil dat als je zo adres hebt:
http://webmakerij.markei.nl/index.php?directory=scripts&bestand=ditbestandbestaatniet
Je de 404 krijgt van Apache.
Ik zelf heb het opgelost door gewoon een redirect te doen naar mijn custom error pages.
Maar hij heeft geen/wil nog geen custom error pages en wil dus de default van apache laten zien.
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
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.
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.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
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.
ik zal ff zoeken anders.
Edit:
Hieronder...
Hieronder...
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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>
<!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:
Of... voeg een foute include toe of, om op dezelfde host te blijven:
Gewijzigd op 01/01/1970 01:00:00 door Legolas
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 ;( .
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 ;( .




