Pagina 1 di 1
php - includere una 404 personalizzata
Inviato: ven 26 set 2008, 22:18
da danix
Ciao a tutti...
mi sapete consigliare il metodo migliore per includere una pagina 404 personalizzata?? dite di creare una paginetta html o è meglio se la includo tramite php??
vorrei capire pro e contro di entrambe le soluzioni...
Grazie mille per l'aiuto...

Re: php - includere una 404 personalizzata
Inviato: ven 26 set 2008, 23:05
da cymon
danix85 ha scritto:Ciao a tutti...
mi sapete consigliare il metodo migliore per includere una pagina 404 personalizzata?? dite di creare una paginetta html o è meglio se la includo tramite php??
vorrei capire pro e contro di entrambe le soluzioni...
Grazie mille per l'aiuto...

Non capisco il tema... la 404 si dovrebbe inserire come redirect di apache
tipo come c'è scritto qui. A questo punto è una pagina come tutte le altre, puoi crearla dinamica così che riporti informazioni sulla provenienza e instradi meglio l'utente o può esere un semplice HTML...
Re: php - includere una 404 personalizzata
Inviato: ven 26 set 2008, 23:22
da sardylan
Anche io ti consiglio di sistemare il tutto con l'uso dell'htaccess, sempre che l'hosting dove sei te lo permetta...
Re: php - includere una 404 personalizzata
Inviato: ven 26 set 2008, 23:37
da danix
non mi sono spiegato bene nel mio precedente post...
ovviamente userò uno statement nel .htaccess per reindirizzare in caso di errore, ma vorrei capire... è meglio reindirizzare verso una pagina a se stante o verso una pagina inclusa tipo
index.php?p=404??
tra l'altro la pagina 404 sarà comunque in php anche se a se stante perchè ci dovrò includere del codice per inviarmi una mail con l'errore che l'ha richiamata...
Alla luce di tutto ciò... com'è meglio procedere??
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 0:24
da danix
altra carne al fuoco...
nell'htaccess io specifico un ErrorDocument per il 404, giusto?? questo però verrà utilizzato solo in questo caso specifico:
mi seguite??

se invece mi trovo in questa situazione:
php se ne uscirà con un errore di inclusione non riuscendo a trovare la pagina in questione... in questo caso però non riesco a fargli mandare un header 404, perchè trovandomi all'interno della index.php l'header è già settato a text/html... come potrei fare?? si può lavorare a livello di htaccess (credo di no) o devo scrivere qualche controllo in php??
Grazie per l'aiuto...

Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 1:14
da cymon
danix85 ha scritto:altra carne al fuoco...
nell'htaccess io specifico un ErrorDocument per il 404, giusto?? questo però verrà utilizzato solo in questo caso specifico:
mi seguite??

se invece mi trovo in questa situazione:
php se ne uscirà con un errore di inclusione non riuscendo a trovare la pagina in questione... in questo caso però non riesco a fargli mandare un header 404, perchè trovandomi all'interno della index.php l'header è già settato a text/html... come potrei fare?? si può lavorare a livello di htaccess (credo di no) o devo scrivere qualche controllo in php??
Grazie per l'aiuto...

Lato apache non è un 404 perché la index.php c'è. Secondo me devi filtrare i valori di p e gestire un "else" per tutti quelli non considerati. Se vuoi penso sia rapidissimo impostare in questo caso una redirect che alla fine fa ricadere il server in 404 e fa venire su la pagina di cui si parlava prima.
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 1:45
da sardylan
Io ti consiglio di crearti una dir nella root del tuo sito chiamata errors e metterci dentro una pagina per ogni errore... Oppure crei una error.php e li passi code=number.. E gestisci così...
Se poi vuoi anche mascherare l'indirizzo, ti consiglio di usare mod_rewrite!!
Esempio di .htaccess:
Codice: Seleziona tutto
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
Oppure altro esempio:
Codice: Seleziona tutto
ErrorDocument 401 /errors.php?code=401
ErrorDocument 403 /errors.php?code=403
ErrorDocument 404 /errors.php?code=404
ErrorDocument 500 /errors.php?code=500
in pratica non fa altro che fare un redirect all'url inserito nella direttiva dopo il codice di errore!! Quindi il browser dell'utente vedra un codice 200 (se non sbaglio) che significa redirect, e punterà alla pagina errors.php, che dovrà contenere una roba simile:
Codice: Seleziona tutto
<?php
$error_code = $_GET['code'];
echo "<h1>Errore $error_code</h1>\n";
if($error_code == "404") {
echo "<p>Pagina non trovata</p>\n";
} elseif ($error_code == "500") {
echo "<p>Pagina non trovata</p>\n";
} else {
echo "<p>Errore non conosciuto</p>\n";
}
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 10:37
da conraid
Se vuoi fare tutto con index.php puoi usare il metodo consigliato da sardylan
e poi prendi la variabile dall'array GET
Ma http manda una "variabil"e senza bisogno di aggiungerla
per esempio basta, e dal file index.php la ricavi con $_SERVER['REDIRECT_STATUS']; senza bisogno di scomodare GET
Come ti ha detto, meglio usare una pagina apposita però, tipo errors.php o come vuoi chiamarla
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 13:12
da cymon
danix85 ha scritto:
tra l'altro la pagina 404 sarà comunque in php anche se a se stante perchè ci dovrò includere del codice per inviarmi una mail con l'errore che l'ha richiamata...
Vuoi che invii una mail a ogni 404? Ma è un sito su internet? Conta che in questo caso riceverai uno mucchio di spam per i tentatvi di hack per raggiungere pagine amministrative o altre robe del genere, senza contare i furbini che cercheranno di riscriversi la URL per vedere i contenuti non ancora rivelati...
Io ho un sito a basso traffico e questo mese sono già a un 200 404, ma ad analizzarli trovo pochissimi broken link effettivi.
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 14:12
da danix
Grazie delle risposte...
Dal momento che ho il SafeMode di php spento, potrei fare in modo che i 404 mi vengano salvati su un log, e magari una volta a settimana potrei farmi spedire il log via mail...
che ne pensate??
Chiedo consiglio perchè non ho mai amministrato un sito che dovrà andare in produzione, a parte i sitarelli personali non ho mai fatto nulla di grosso...
Grazie mille per l'aiuto che mi state dando...

Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 14:18
da cymon
danix85 ha scritto:Grazie delle risposte...
Dal momento che ho il SafeMode di php spento, potrei fare in modo che i 404 mi vengano salvati su un log, e magari una volta a settimana potrei farmi spedire il log via mail...
che ne pensate??
Sicuramente il log è meno disordinato di un invio continuo di mail a mio parere... ovviamente bisogna valutare come crescono per non ingolfare l'harddisk... Conta che già i log di apache, di per sé, riportano i 404, comunque. In proposito, non hai già un sistema di reportistica degli accessi che potrebbe gestire la cosa?
Re: php - includere una 404 personalizzata
Inviato: sab 27 set 2008, 14:21
da conraid
danix85 ha scritto:
che ne pensate??
Se hai un gestore di statistiche ci pensa lui a mostrarti i 404, altrimenti ne metti uno tu.
Tieni presente che ti serve solo per valutare i tuoi errori, come ti hanno detto troverai 10/100/1000 tentativi di scovare pagine inesistenti, e su questi... lascia perdere.
Guarda per esempio alcuni 404 del mio blog
Codice: Seleziona tutto
/2006/11/index.php
/phpwcms/include/inc_ext/spaw/dialogs/table.php
/2006/index.php
/sitemap.html
/2006/phpwcms/include/inc_ext/spaw/dialogs/table.php
/_vti_bin/owssvr.dll
/bmckulchjxzz.html
/MSOffice/cltreq.asp
a che ti serve?
Diverso il discorso di sapere i tuoi errori come dicevo. Su un sito nuovo per esempio avevo dei 404 per il favicon ed ho visto che avevo i permessi errati per quel file, e così via...
Un file di log è IMHO la cosa migliore, ma se ce l'ha già il provider... usa quello (se te lo fanno usare, quello che uso io mi fa vedere gli ultimi 4 giorni di log del mio sito, e comunque tutto rimane memorizzato grazie ad awstat)