[php/apache] redirect mod_rewrite, dan 404 via php header

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

Topicstarter
hi,

heb een rewrite in me htaccess staan die 'mooie' urls forward naar eigenlijke bestand. ding is nu dat ik in geval van een niet bestaand bestand (dwz als er geen pagina in db bij bijpassend id wordt gevonden) een 404 wil weergeven, maar er iets mis lijkt te gaan..


.htaccess:
code:
1
2
ErrorDocument 404 "File not found.
RewriteRule ^pagina/([0-9]+)/?$ pagina.php?pagina_id=$1


PHP:
1
2
3
if(mysql_num_rows($sqlResult) == 0) {
    header("Status: 404 Not Found"); exit;
}



probleem is dat als ik een niet bestaande pagina opvraag ik een lege (witte) pagina terug krijg zonder content. vraag ik een niet bestaande url op (bv /onzin) dan krijg ik wel gewoon een goede foutmelding.
omdat ik in mijn serverlogs zag dat er gewoon een 200 OK genoteerd wordt bij het opvragen van een niet bestaand pagina nummer, dacht ik dat het probleem wellicht daar lag, maar ook het toevoegen van een extra header("HTTP/1.1 404 Not Found"); helpt niet.

heeft iemand enig idee hoe ik dit probleem op een nette manier kan oplossen? (dus niet iets van een echo cq redirect naar niet bestaand bestand cq redirect naar 404 pagina; ik wil dit nl gewoon via me .htaccess lekker centraal kunnen blijven beheren)

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

Topicstarter
niemand die me kan helpen?

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 21:10

pietje63

RTFM

Ik denk dat je het anders aan moet pakken en in je php laten checken of de id bestaat en anders een error pagina voorschotelen.

Apache kan niet zien of de id in de database bestaat, en de pagina pagina.php?id=nietbestaandid geeft idd een 200/OK omdat php dit gewoon pikt.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

Topicstarter
dit is ook precies wat ik doe..

ik laat apache doorsturen naar het php script, en in het php script check ik of het id bestaat. zo niet dan stuur ik een 404 header vanuit mijn php script.

het probleem is echter dat er op dat moment een lege pagina tevoorschijn komt, ipv de 404 boodschap die ik op heb gegeven via mijn htaccess

mijn vraag is dus waarom die gebeurt en hoe ik dit oplos..

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

Die rewriterule wordt natuurlijk alleen toegepast als het stuk achter het domein begint met 'pagina/etc'..

Als je het nou zo doet:
code:
1
2
ErrorDocument 404 pagina.php?pagina_id=error404
RewriteRule ^pagina/([0-9]+)/?$ pagina.php?pagina_id=$1

Dan kan je die error in je phpscript verder verwerken.
Ik zie het probleem niet helemaal eigenlijk :)

[ Voor 3% gewijzigd door bRight op 12-08-2004 13:28 ]