Pagina 1 di 1
Personalizzare errore 404
Inviato: ven 29 ott 2010, 17:52
da samiel
In un sito ho "personalizzato" l'errore 404 in caso si cerchi di aprire
una pagina non (ancora) presente col seguente codice:
Codice: Seleziona tutto
<?php if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php"); else include("moduli/nondisp.php"); ?>
e ho ovviamente un file nondisp.php.
Vorrei però inserire anche una pagina diversa se il problema
fosse generato dal tentativo di aprire un link a un oggetto
(come un pdf) non ancora caricato.
Come possa fare in questo caso?
Grazie
M.
Re: Personalizzare errore 404
Inviato: ven 29 ott 2010, 18:32
da shark1500
E` un po` brutto il tuo metodo.
Basta aggiungere la seguente opzione nel file http.conf
Dove (ovviamente) cambi la pagina e ci metti quella che vuoi, cosi` se non esiste la pagina richiama quel file li`.
Re: Personalizzare errore 404
Inviato: ven 29 ott 2010, 19:06
da samiel
In http.conf? Ma il sito mica è in un mio server,
è nel server della provincia di Venezia!
Non so se ho capito bene la tua indicazione,
ma pensavo piuttosto di dover mettere un redirect
relativo allo header dell'errore in .htaccess...
Il fatto è che con la mia soluzione
se si richiama una pagina inesistente.
si apre comunque una pagina del sito stesso
con la sua formattazione e i menu.
Invece se metto una cosa del tipo
e creo una pagina error.php vedo solo una pagina bianca
col messaggio...
M.
Re: Personalizzare errore 404
Inviato: ven 29 ott 2010, 22:04
da roberto67
mm.. mi sa che allora apache non ti consente di usare .htaccess (AllowOverride none)

Re: Personalizzare errore 404
Inviato: ven 29 ott 2010, 22:46
da samiel
Sì che mi consente di usarlo,
ma volevo fare un redirect
a una pagina del sito in caso di errore...
M.
Re: Personalizzare errore 404
Inviato: sab 30 ott 2010, 9:45
da conraid
è proprio quello il metodo
o quella che vuoi, l'importante è che esista, se continua a darti errore 404 semplicemente hai sbagliato path
Poi in quella pagina, puoi usare anche cose belline, io per esempio ho solamente la pagina error.php e redirigo li tutti gli errori. In questa pagina controllo $_SERVER['REDIRECT_STATUS'] ed in base a quello mostro immagine diverse e messaggi personalizzati
Per l'altra domanda
http://www.php.net/manual/en/function.finfo-file.php
Re: Personalizzare errore 404
Inviato: sab 30 ott 2010, 19:16
da samiel
No, funziona nel senso che vedo il messaggio incluso in error.php.
La mia domanda nasceva dal fatto che col codice già incluso,
ossia il sopracitato
Codice: Seleziona tutto
<?php if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php"); else include("moduli/nondisp.php"); ?>
in caso di errore (quando si cerca di aprire una pagina che no esiste)
il messaggio appare in una tipica pagina del sito, formattata come tutto il resti
e con i menu, per cui è facile tornare in un'altra sezione.
Invece, nel caso si cerchi di aprire un oggetto non presente,
come un jpg o un pdf non caricato, appare silo il messaggio
invocato tramite .htaccess. Invece io volevo, come sopra,
che ci fosse il reindirizzamento a una pagina del sito.
Da quello che capisco potrei eliminare nondisp.php
e creare un unico error.php contenente la funzione
$_SERVER['REDIRECT_STATUS']. Provo a vedere
come si gestiscono in questo caso i tipi di errore...
Intanto grazie
M.
Re: Personalizzare errore 404
Inviato: sab 30 ott 2010, 19:38
da samiel
Allora... ho creato un error.php così:
Codice: Seleziona tutto
<?php
// Get Variables
$error = $_SERVER['REDIRECT_STATUS'];
$referring_url = $_SERVER['HTTP_REFERER'];
$requested_url = $_SERVER['REQUEST_URI'];
$referring_ip = $_SERVER['REMOTE_ADDR'];
$server_name = $_SERVER['SERVER_NAME'];
//echo $error;
// Error messages to display
switch ($error) {
# Error 400 - Bad Request
case 400:
?>
<h2>Errore 400 - Richiesta erronea</h2>
<p>L'indirizzo richiesto non è raggiungibile</p>
<?
break;
# Error 401 - Authorization Required
case 401:
?>
<h2>Errore 401 - Autorizzazione richiesta</h2>
<p>L'indirizzo richiesto richiede una previa autenticazione</p>
<?
break;
# Error 403 - Access Forbidden
case 403:
?>
<h2>Errore 403 - Accesso vietato</h2>
<p>L'accesso all'indirizzo richiesto è vietato</p>
<?
break;
# Error 404 - Page Not Found
case 404:
?>
<h2>Errore 404 - File non trovato</h2>
<p>L'oggetto richiesto non esiste</p>
<?
break;
# Error 500 - Server Configuration Error
case 500:
?>
<h2>Errore 500 - Errore di configurazione del server</h2>
<p>L'indirizzo richiesto risulta a un errore di configurazione del server </br>
Se possibile, contattare il webmaster</p>
<?
break;
# Unknown error
default:
?>
<h2>Errore sconosciuto</h2>
<p>Dovrebbe essere impossibile vedere questa pagina. </br>
Controllare le impostazioni locali di sicurezza</p>
<?
}
// Display selected error message
echo($errordesc);
if (!$referring_url == '')
{
echo '<p><a href="'.$referring_url.'"><< Torna alla pagina precedente</a></p>';
}
else
{
echo '<p><a href="javascript:history.go(-1)"><< Torna alla pagina precedente</a></p>';
}
?>
In index.php ho lasciato (ma non sono sicuro)
Codice: Seleziona tutto
<div id="content">
<?php
if(file_exists("$folder/$pagina.php")) include("$folder/$pagina.php");
else include("moduli/error.php");
?>
</div><!--content-->
Problema:
Mentre se cerco di caricare una pagina che non esiste
vedo una normale pagina del sito, col corretto messaggio
di errore impostato in error.php, invece
se cerco di scaricare un file che non esiste
(come da un link a un pdf che non c'è nel server)
mi appare correttamente il messaggio di error.php.
Ma la pagina è a sfondo bianco, senza alcuna intestazione.
Io invece volevo che il messaggio di errore
comparisse in una normale pagina...
M.
Re: Personalizzare errore 404
Inviato: dom 31 ott 2010, 10:58
da danix
Ciao Mauro, my 2 cents...
perchè non usi la struttura che c'è nel resto del sito anche nella pagina error.php e la richiami tramite htaccess come ti è stato consigliato? così ti eviti di doverla includere nella index del sito ma ti rimane comunque la stessa impaginazione... certo, magari è poco elegante e poco 'dinamica', ma almeno ti eviti quell'inclusione poco standard... In questo modo risolvi anche il secondo problema...
Re: Personalizzare errore 404
Inviato: lun 1 nov 2010, 19:51
da samiel
Credo che l'inghippo stia nell aparte finale di error.php, ossia
Codice: Seleziona tutto
// Display selected error message
echo($errordesc);
if (!$referring_url == '')
{
echo '<p><a href="'.$referring_url.'"><< Torna alla pagina precedente</a></p>';
}
else
{
echo '<p><a href="javascript:history.go(-1)"><< Torna alla pagina precedente</a></p>';
}
?>
Infatti io vorrei che il messaggio fosse stampato
ricorrendo smpre e comunque a una pagina formattata come il resto del sito.
Però una cosa non capisco:
perché i vari errori stampano la pagina bianca
di Apache col messaggio e invece l'errore sconosciuto
mi apre una pagina formattata con tanto di menu ecc?
Ce sicuramente un errore che mi sfugge...
M.