Accedi per seguire   
Seguaci 0
spiug

Gestire Pagine Di Errore 404

32 messaggi in questa discussione

Su molti siti ho notato che è possibile al server capire quando si trova davanti ad una pagine inesistente, o non presente (es un link errato) e quindi mostrare una pagina personalizzata al posto della banale solita pagina....

si può fare nella mia situazione o bisogna intervenire dal server??

Boh...io stò sparando a caso, illuminatemi voi... ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Su molti siti ho notato che è possibile al server capire quando si trova davanti ad una pagine inesistente, o non presente (es un link errato) e quindi mostrare una pagina personalizzata al posto della banale solita pagina....

si può fare nella mia situazione o bisogna intervenire dal server??

Boh...io stò sparando a caso, illuminatemi voi... ;-)

Sono pagine impostate sul server, le famose 404 & Co.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Sono pagine impostate sul server, le famose 404 & Co.

Esattamente, a seconda del server Web, si possono impostare pagine personalizzate in presenza di una pagina non trovata, in cui magari si rimanda alla home page del sito stesso, per fare questo in genere bisogna istruire il server Web in modo esplicito. ;-) :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esattamente, a seconda del server Web, si possono impostare pagine personalizzate in presenza di una pagina non trovata, in cui magari si rimanda alla home page del sito stesso, per fare questo in genere bisogna istruire il server Web in modo esplicito. ;-) :)

Infatti...come immaginavo :P

Vabbè ragazzi...grazie lo stesso...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Se ti trovi su server Apache puoi usare .htaccess:

- http://httpd.apache.org/docs/1.3/howto/htaccess.html

Per le 404 puoi fare così:

<Files .htaccess>
order allow,deny
deny from all
</Files>

ErrorDocument 401 http://www.tuosito.tld/401/
ErrorDocument 403 http://www.tuosito.tld/403/
ErrorDocument 404 http://www.tuosito.tld/404/

Le prime quattro righe sono necessarie ad evitare che il file .htaccess possa essere letto dall'esterno. Le restanti tre sono semplici: indicano dove trovare le pagine di errore. Io ti ho fatto un esempio in cui si indica una directory con l'errore specifico.

In pratica devi creare un file che abbia il nome .htaccess con il punto davanti al nome. Se su windows non riesci a crearlo nominalo semplicemente htaccess e poi rinominalo sul server, da ftp puoi usare il comando rename htaccess .htaccess

Per ulteriori informazioni guarda anche questi siti:

- http://www.bigoakinc.com/blog/error-pages/

- http://www.htaccesselite.com/htaccess/htac...mples-vt11.html

Qui trovi un elenco delle pagine 404 più buffe trovate in circolazione ^_^

- http://www.plinko.net/404/

Modificato da cereal

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma funziona anche nel mio caso??

Cioè anche se non metto le mani sul server?? :)

...quindi dovrei creare un file .htaccess di contenuto quel codice che mi hai postato (con le opportune modifiche), upparlo sul server (rinominando se mi dà rogne nell'upparlo) e sono a posto?!

Fantastico!!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Sui server Apache si, non dovresti fare altro. Sempre che gli admin del server in cui si trova il tuo sito te lo permettano. Su altervista.org, ad esempio, fino a qualche tempo fa non era possibile farlo, la funzione era stata inibita, adesso non so. Sui server Aruba invece si può, il tuo non so com'è configurato, dovresti poterlo fare, basta che metti il file .htaccess nella root del sito (dove si trova la homepage). Le istruzioni che ci inserisci dopo si estendono alle subdirectory. Bye :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

FUNZIONAAAAAAAAAAAAAAA!!!!!!

:):P:P:wub::P;)

GRAZIEEE :(;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

E adesso...un'altra cosa semplice semplice (credo)...

fare un report (magari che me lo spedisce via mail) che mi indica la pagina richiesta e la pagina da cui proviene...

...secondo te è difficile farlo?! :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Credo si possa fare, ma devo provare, se stasera ci riesco ti passo qualcosa :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

La struttura di apache è molto intelligente da questo punto di vista e non per nulla è uno dei webserver più utilizzato, la sovrascrittura dei file .htacces copre funzioni molto utili (come il famoso URL-rewriting) che ti permettono di personalizzare l'accesso alla tua cartella sul server come vuoi ...

---> http://httpd.apache.org/docs/1.3/howto/htaccess.html

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
La struttura di apache è molto intelligente da questo punto di vista e non per nulla è uno dei webserver più utilizzato, la sovrascrittura dei file .htacces copre funzioni molto utili (come il famoso URL-rewriting) che ti permettono di personalizzare l'accesso alla tua cartella sul server come vuoi ...

---> http://httpd.apache.org/docs/1.3/howto/htaccess.html

:)

...e quindi?!

Sarebbe qualcosa di "male"??

...scusa ma da ignorante in materia non ho capito il senso di questa tua affermazione... :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Con lo javascript si può tornare indietro (history -1), e se c'è qualche funzione simile del PHP saremmo a cavallo nel sapere la provenienza...

...se poi prima del redirect alla pagina 404.php (quella dell'errore) ci salviamo in una variabile il link cercato (ma non trovato) avremmo entrambi gli elementi.

E poi si potrebbe fare quello che intendo fare.

O creare un file con il report, oppure spedirlo per e-mail (visto che tanto non costerebbe nulla).

Se sei a conoscenza di funzioni del genere del PHP allora siamo a cavallo :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

...e quindi?!

Sarebbe qualcosa di "male"??

...scusa ma da ignorante in materia non ho capito il senso di questa tua affermazione... :P

Noooo perchè mai??? Stavo solo dicendo che Apache è molto versatile da questo punto di vista e quindi riesci a creare dei permessi "locali" che valgono solo sulla cartella dove ti trovi e questo è un bene perchè offre un alto grado di personalizzazione :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Con PHP puoi intercettare i "referer", cioè la pagina di provenienza dove è inserito il link che permette all'utente di arrivare alla pagina "corrente", ora non ricordo come si fa ma se fai qualche ricerca mirata sul Web sicuramente trovi un mare di documentazione! :P:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Con PHP puoi intercettare i "referer", cioè la pagina di provenienza dove è inserito il link che permette all'utente di arrivare alla pagina "corrente", ora non ricordo come si fa ma se fai qualche ricerca mirata sul Web sicuramente trovi un mare di documentazione! :P:)

Si...sapevo ci fosse una cosa del genere...domani cerco e vi sò dire... ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Si...sapevo ci fosse una cosa del genere...domani cerco e vi sò dire... ;-)

Devi utilizzare le variabili Autoglobali di PHP: $_SERVER

Per conoscere da dove si arriva, basta interrogare: $_SERVER['HTTP_REFERER']

Qui trovi un elenco di tutte le variabili "utili" ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

L'ho scritto, spero di non stabellare con il codice, dovrebbe funzionare, non ho potuto provare l'invio della mail ma dovrebbe andare, funziona così:

  1. nella prima parte vengono definite delle variabili, quelle di cui parlavano Prozac e Lorenz
  2. nella seconda parte la variabile $count fa un semplice controllo, se $count equivale a zero prosegue alla terza parte dello script, altrimenti (se equivale a 1) salta direttamente alla quinta parte
  3. la terza parte si occupa di visualizzare le informazioni all'utente: errore, pagina da cui si è arrivati, con relativo link per poter tornare indietro e il file che non è stato trovato*, poi con i css puoi creare un layout, il mio esempio è molto scarno da questo punto di vista
  4. la quarta parte è lo script di invio delle mail, l'indirizzo a cui vuoi ricevere gli avvisi lo puoi impostare nella variabile $email, presente nella prima parte dello script.
  5. la quinta parte invece fa comparire un messaggio nel caso in cui lo script non venga eseguito, questo perché ad esempio $count non ha dato valore zero.

Lo script è costruito in modo da evitarti l'arrivo di email piene di avvisi di file non trovati sul tuo sito web, si attiva soltanto quando HTTP_REFERER possiede un valore, in caso contrario da valore 1 alla variabile $count e lo script si ferma, visualizzando un messaggio come questo:

Pagina non trovata, torna indietro oppure vai in homepage.

Questo perché spesso worm e virus cercano determinati file sui siti web, alla ricerca di punti deboli in cui fare breccia. Senza effettivamente essere arrivati da un link sbagliato. Provano a caso. Se un utente ad esempio sbaglia a digitare il nome della pagina ottiene il messaggio della quinta parte e tu non ricevi la mail di avviso, se però qualcuno prova a collegarsi da un altro sito, da un'altra pagina del tuo stesso sito o da un motore di ricerca e il file non c'è allora tu ricevi le informazioni.

Nel caso in cui si attivi, lo script, visualizza delle informazioni all'utente e a te invia una mail con i dati riguardanti l'errore: oltre al file non trovato e al percorso ti indica il tipo di browser utilizzato e l'indirizzo IP (sempre dell'utente).

Sotto riporto lo script per intero, ti basta fare un copia e incolla per farlo funzionare, ricorda solo di inserire il tuo indirizzo email, certi provider per problemi di sicurezza permettono l'invio al solo indirizzo predefinito che di solito corrisponde a webmaster@tuodominio.tld (puoi verificarlo con un php_info() se vuoi).

<?php header("HTTP/1.1 404 Not Found"); ?>
<html>
<head>
<title>404 Not Found</title>

</head>
<body>
<?php

// prima parte
$HTTP_REFERER = $_SERVER['HTTP_REFERER'];
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
$REQUEST_URI = $_SERVER['REQUEST_URI'];
$SERVER_NAME = $_SERVER['SERVER_NAME'];
$data = date("d-m-Y, G:i:s");
$email = "tuo@indirizzo.tld";
$goback = "<a href=\"java script:history.back(-1);\">torna indietro</a>.";
$homepage = "<a href=\"/\">homepage</a>.";
$link = $SERVER_NAME . $REQUEST_URI;

// seconda parte
$count = 0;
if ($HTTP_REFERER == "") { $count++; }

echo "<!-- count: $count -->\n";

// terza parte
if ($count == 0) {
echo "<h2>404 Not Found - Pagina non trovata</h2>\n\r";
echo "<p>" . $data . "</p>\n\r";
echo "<p>Torna indietro: <a href=\"" . $HTTP_REFERER . " \">" . $HTTP_REFERER . "</a></p>\n\r";
echo "<p>File non trovato: <a href=\"http://" . $link . "\">http://" . $link . "</a></p>\n\r";


// quarta parte
$headers = "From: webmaster@" . $SERVER_NAME . "\n\r" .
		   "Reply-To: webmaster@" . $SERVER_NAME . "\n\r";

$message = "Data e orario:" . $data . "\n\r" .
		   "File richiesto: http://" . $link . "\n\r" .
		   "Link di provenienza: " . $HTTP_REFERER ."\n\r" .
		   "Browser: " . $HTTP_USER_AGENT . "\n\r" .
		   "IP utente: " . $REMOTE_ADDR . "\n\r" .
		   stripslashes($message);

mail($email, "Errore 404", $message, $headers);

// quinta parte
} else {
  echo 'Pagina non trovata, ' . $goback . "oppure vai in " . $homepage;
}

?>
</body>
</html>

*Prima facevo riferimento alla pagina non trovata, per far funzionare lo script dovresti modificare il file .htaccess perché così come te l'ho dato non va: indicando l'intero indirizzo con tanto di http:// porta a visualizzare nella variabile REQUEST_URI (che visualizza il nome del file non trovato) il nome della pagina 404. Non ti sto a spiegare perché, non perché sia difficile ma perché mi si intrecciano le dita :P

...Comunque devi modificare .htaccess in questo modo:

<Files .htaccess>
order allow,deny
deny from all
</Files>

ErrorDocument 404 /404/

Se tu utilizzi la pagina 404.php e l'hai posizionata nella root (dove si trova la homepage) allora scrivi:

<Files .htaccess>
 order allow,deny
 deny from all
 </Files>

 ErrorDocument 404 /404.php

Lo script originario è qui, io l'ho soltanto agghindato un po': http://www.haroldbakker.com/php/404.php

Hm.. the end e me ne vado a nanna, spero ti sia utile, bye :)

Modificato da cereal

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

E questo è quello che mi è stato spedito cliccando sul primo link :P :P :

Reply-To: webmaster@www.wininizio.it

Data e orario:09-01-2007, 12:54:18

File richiesto: http://www.wininizio.it/spiug/404.php

Link di provenienza: http://forum.wininizio.it/index.php?showto...pid=302045&

Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9

IP utente: 151.25.8.65

...mentre sul secondo link mi esce la classica pagina di errore :)

Not Found

The requested URL /spiug/pag_ke_nn_esiste.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Apache/1.3.36 Server at www.wininizio.it Port 80

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

...mentre sul secondo link mi esce la classica pagina di errore :anna:

Tutto OK...ho sistemato tutto da solo :) ( :P ).

Essendo la mia una sottodominio dovevo aggiungere /spiug prima del /404.php.

Ovvero ecco il mio file .htaccess

<Files .htaccess>
order allow,deny
deny from all
</Files>

ErrorDocument 404 /spiug/404.php

:P

E infatti eccomi arrivata la mail (PERFETTA)!!

Reply-To: webmaster@www.wininizio.it

Data e orario:09-01-2007, 13:12:16

File richiesto: http://www.wininizio.it/spiug/pag_ke_nn_esiste.php

Link di provenienza: http://forum.wininizio.it/index.php?showto...pid=302046&

Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9

IP utente: 151.25.8.65

:wub::P;):(;);):):angry::angry::angry::whip::whip::D:D:D:D:thumbup:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Caro CEREAL...per me te sei un genio!! :P

...non ho parole a sufficenza per ringraziarti.

PS: non ho idea di che mega occhiaie devi avere per screivermi a quell'ora :P ...ma te ne sono grato!!

...e probabilmente non sarò il solo!! Altri webmaster provetti te ne saranno riconoscenti :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho dato una modificatina al file 404.php per personalizzarlo un pochino (appena ho tempo però lo sistemo per benino, anche graficamente):

<?php header("HTTP/1.1 404 Not Found"); ?>
<html>
<head>
<title>404 Not Found</title>

</head>
<body>
<?php

// prima parte
$HTTP_REFERER = $_SERVER['HTTP_REFERER'];
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
$REQUEST_URI = $_SERVER['REQUEST_URI'];
$SERVER_NAME = $_SERVER['SERVER_NAME'];
$data = date("d-m-Y, G:i:s");
$email = "spiug@wininizio.it";
$goback = "<a href=\"java script:history.back(-1);\">torna indietro</a>.";
$homepage = "<a href=\"http://www.wininizio.it/spiug\">HOMEPAGE</a>.";
$link = $SERVER_NAME . $REQUEST_URI;

// seconda parte
$count = 0;
if ($HTTP_REFERER == "") { $count++; }

echo "<!-- count: $count -->\n";

// terza parte
if ($count == 0) {
echo "<h2>404 Not Found - Pagina non trovata</h2>\n\r";
echo "<p>" . $data . "</p>\n\r";
echo "<p>Torna indietro: <a href=\"" . $HTTP_REFERER . " \">" . $HTTP_REFERER . "</a></p>\n\r";
echo "<p>File non trovato: <b>" . $link . "</b></p>\n\r";
echo "<p><b>Clicca per arrivare all'".$homepage."</b></p>\n\r";


// quarta parte
$headers = "From: webmaster@" . $SERVER_NAME . "\n\r" .
		   "Reply-To: webmaster@" . $SERVER_NAME . "\n\r";

$message = "Data e orario:" . $data . "\n\r" .
		   "File richiesto: http://" . $link . "\n\r" .
		   "Link di provenienza: " . $HTTP_REFERER ."\n\r" .
		   "Browser: " . $HTTP_USER_AGENT . "\n\r" .
		   "IP utente: " . $REMOTE_ADDR . "\n\r" .
		   stripslashes($message);

mail($email, "Errore 404", $message, $headers);

// quinta parte
} else {
  echo 'Pagina non trovata, ' . $goback . "oppure vai in " . $homepage;
}

?>
</body>
</html>

Innanzitutto ho tolto la possibilità il link cliccabile alla pagina sbagliata (non ha senso) che senò altrimenti riportava alla stessa pagina d'errore e mandava un'ulteriore mail inutile.

Poi ho aggiunto un link diretto alla Homepage che mancava. :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Allora...diciamo che il suo lavoro lo fà...

...ma anche troppo bene!!

Nel caso di un sito ad hoc può andar bene, ma sul mio pineo di errori (immagini mancanti o link sbagliati) è una tortura!!

Nel giro di 1 ora ho ricevuto più di 60 email... :P

C'è qualcosa da sistemare... :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

eheh dubito che lo terrai attivo per molto.. se lo mantieni buon lavoro! ^_^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0