Likes Likes:  0
Resultaten 1 tot 6 van de 6
Geen
  1. #1
    jrf[no]
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [php] htaccess rewrite rules in combinatie met php headers wijziging

    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

  2. #2
    Daniel Tryba
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] htaccess rewrite rules in combinatie met php headers wijziging

    jrf[no] <"jrf[no]"@[spam]jokeaday.net> wrote:
    [knip]
    > 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.


    Op zich niet raar, het enige wat je in (6) doet is de status van de
    _huidige_ request veranderen. Simpelste oplossing: include de 404
    pagina.

    In jou geval met slects 1 controller is dat dus heel simpel te doen door
    gewoon op het moment dat je hierboven bij 6 een 404 wilt genereren de
    code aan te roepen welke door je 404 handler ook wordt aangeroepen (en
    dus niet stiekum een include van de 404 via http (zonde van de
    overhead)).


  3. #3
    jrf[no]
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] htaccess rewrite rules in combinatie met php headers wijziging

    Daniel Tryba wrote:
    > jrf[no] <"jrf[no]"@[spam]jokeaday.net> wrote:
    > [knip]
    >
    >>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.

    >
    >
    > Op zich niet raar, het enige wat je in (6) doet is de status van de
    > _huidige_ request veranderen. Simpelste oplossing: include de 404
    > pagina.
    >
    > In jou geval met slects 1 controller is dat dus heel simpel te doen door
    > gewoon op het moment dat je hierboven bij 6 een 404 wilt genereren de
    > code aan te roepen welke door je 404 handler ook wordt aangeroepen (en
    > dus niet stiekum een include van de 404 via http (zonde van de
    > overhead)).
    >


    Daniel,

    Dank voor je reactie.

    Ik begrijp eruit dat ik de errorpage code na de header verandering moet
    aanroepen (in het script gebeurd dit via includes).

    Maar wat ik niet begrijp is wat je bedoelt met:
    "(en dus niet stiekum een include van de 404 via http (zonde van
    de overhead))."

    Zou je me dat nog uit willen leggen ?

    Daarnaast blijft dan alsnog mijn vraag staat over de errorlogging : hoe
    kan ik ervoor zorgen dat bij een dergelijke 404 het apache errorlog
    correct geupdate wordt ?

    Wie raad weet mag het zeggen.

    Alvast mijn dank !

    Grz, Juliette

  4. #4
    Daniel Tryba
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] htaccess rewrite rules in combinatie met php headers wijziging

    jrf[no] <"jrf[no]"@[spam]jokeaday.net> wrote:
    > Ik begrijp eruit dat ik de errorpage code na de header verandering moet
    > aanroepen (in het script gebeurd dit via includes).
    >
    > Maar wat ik niet begrijp is wat je bedoelt met:
    > "(en dus niet stiekum een include van de 404 via http (zonde van
    > de overhead))."
    >
    > Zou je me dat nog uit willen leggen ?


    Je hebt in je index.php ergens code als:

    if($_GET['id']=='error')
    {
    doeiets();
    }

    voor de request: http://host.example/index.php?id=error&e=404

    Waar ik op doelde was dat indien de functie die het aantal records terug
    geeft 0 retouneerd je op dat moment dus doeits() moet aanroepen, eg:
    if(countResults()>0)
    {
    echoResults();
    }
    else
    {
    doeiets();
    }

    en niet :
    else
    {
    include('http://host.tld?id=error&e=404');
    }


    > Daarnaast blijft dan alsnog mijn vraag staat over de errorlogging : hoe
    > kan ik ervoor zorgen dat bij een dergelijke 404 het apache errorlog
    > correct geupdate wordt ?


    De request is toch correct afgehandeld, daarmee hoort die dus niet in de
    error.log: http://httpd.apache.org/docs/logs.html#errorlog

    De request is te vinden in de access.log file met de status
    die je er zelf aan gegeven heb.

    Mocht je de 4xx van de andere request willen scheiden dan denk ik dat je
    het best een eigen log kan aanmaken.


  5. #5
    jrf[no]
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] htaccess rewrite rules in combinatie met php headers wijziging

    Daniel Tryba wrote:

    > jrf[no] <"jrf[no]"@[spam]jokeaday.net> wrote:
    >
    >>Ik begrijp eruit dat ik de errorpage code na de header verandering moet
    >>aanroepen (in het script gebeurd dit via includes).
    >>
    >>Maar wat ik niet begrijp is wat je bedoelt met:
    >> "(en dus niet stiekum een include van de 404 via http (zonde van
    >> de overhead))."
    >>
    >>Zou je me dat nog uit willen leggen ?

    >
    >
    > Je hebt in je index.php ergens code als:
    >
    > if($_GET['id']=='error')
    > {
    > doeiets();
    > }
    >
    > voor de request: http://host.example/index.php?id=error&e=404
    >
    > Waar ik op doelde was dat indien de functie die het aantal records terug
    > geeft 0 retouneerd je op dat moment dus doeits() moet aanroepen, eg:
    > if(countResults()>0)
    > {
    > echoResults();
    > }
    > else
    > {
    > doeiets();
    > }
    >
    > en niet :
    > else
    > {
    > include('http://host.tld?id=error&e=404');
    > }
    >
    >
    >
    >>Daarnaast blijft dan alsnog mijn vraag staat over de errorlogging : hoe
    >>kan ik ervoor zorgen dat bij een dergelijke 404 het apache errorlog
    >>correct geupdate wordt ?

    >
    >
    > De request is toch correct afgehandeld, daarmee hoort die dus niet in de
    > error.log: http://httpd.apache.org/docs/logs.html#errorlog
    >
    > De request is te vinden in de access.log file met de status
    > die je er zelf aan gegeven heb.
    >
    > Mocht je de 4xx van de andere request willen scheiden dan denk ik dat je
    > het best een eigen log kan aanmaken.
    >


    Daniel,

    Dank voor je reactie.
    Ik snap nu wat je bedoelt en gebruikte al de door jou geadviseerde
    methode (dus "doeiets" - in dit geval include de relevante tekst voor de
    errorpage en niet "include (http://....)" ).

    Met betrekking tot de logfiles. Ik begrijp je antwoord. Jammer dat dit
    niet werkt zoals ik hoopte.
    Ik vind stats pagina's meestal erg handig voor een compleet overzicht
    inclusief de errors en begrijp dat dat dus niet meer zal gaan werken.

    Dank,
    Juliette

  6. #6
    Daniel Tryba
    [php] htaccess rewrite rules in combinatie met php headers wijziging
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [php] htaccess rewrite rules in combinatie met php headers wijziging

    jrf[no] <"jrf[no]"@[spam]jokeaday.net> wrote:
    > Met betrekking tot de logfiles. Ik begrijp je antwoord. Jammer dat dit
    > niet werkt zoals ik hoopte.
    > Ik vind stats pagina's meestal erg handig voor een compleet overzicht
    > inclusief de errors en begrijp dat dat dus niet meer zal gaan werken.


    Huh? De status is (hier) het 6de token in een access log regel, het is
    dus heel duidelijk of er "errors" tussen zitten. Als jou status pagina
    geen onderschijdt maakt in httpstatus van een accesslog file dan is dat
    op z'n minst twijfelachtig te noemen...


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics