Echte 404
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
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
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
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
Want als jij op een pagina die bestaat een header zet dat de pagina niet bestaat. Dus dan zal er geen error komen.
'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.
Bekijk anders het script is van 'de perfecte 404' o.i.d.
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.
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
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
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
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 ;( .