• User Attivo

    ModRewrite e gestione errore personalizzata (404)

    Ciao a tutti,

    sto usando il mod rewrite su un sito nel quale quando viene chiamata es:

    "pagina.html" l'htaccess richiama "pagina.php?param=pagina"

    qundi il nome della pagina è in realtà il parametro usato dallo script php.

    In una situzione così non c'è mai il 404 perchè qualunque cosa si scriva questa viene passata come parametro alla pagina php effettiva.

    Visto che il parametro è usato in una query mi basta fare il controllo sul risultato della query x decidere se la pagina esiste veramente (quindi se il link è corretto). Nel caso in cui la query non dia risultato ci troverremmo difronte a un 404 (cosa che non avviene perchè comunque vienve chiamata la "pagina.php")

    Io ho risolto così:

    • Ho creato una pagina semplicissima di errore (404) personalizzata: errore.html

    • dentro a pagina php se la query effettuata con il parametro passato non da risultati faccio:

    	
    header("Status: 404 Not Found");
    include("errore.html");
    exit();
    
    

    in questo modo invio come codice il 404 e posso gestire una pagina personalizzata d'errore

    La domana è: qualcuno sa se questo è il modo giusto? Guardano gli header che si passano client e server mi sembra tutto ok, però è la prima volta che provo...

    PS
    Al posto di :
    header("Status: 404 Not Found");

    ho provato anche :
    header ("HTTP/1.0 404 Not Found");

    ma il server invece di rispondere : "404 No Found" rispondevea "404 OK" (poco sensato)

    Attendo vostre considerazioni
    :fumato:


  • Super User

    Il ragionamento non fa una piega, veramente ottimo. Anche nel codice non mi sembra ci siano problemi evidenti.


  • User Attivo

    integro il post precedente

    il file errore.html conviene sostituirlo con un php, così il comando

    header("Status: 404 Not Found");

    viene messo direttamente li

    Poi nel file si può far scrivere nel db il referer per scovare i broken link

    :fumato: