Sito Wordpress Penalizzato per Status Code 500

17
Non c'è solo Penguin o Panda... Marco Bove Imevolution srl [email protected] www.imevolution.it @MarcoBove

description

Caso di Studio di una penalizzazione subdola di un sito Wordpress sparito dalle SERP di Google a causa della funzione WP_Die, che faceva restituire uno status code 500 al sito nonostante le pagine venissero caricate tranquillamente.

Transcript of Sito Wordpress Penalizzato per Status Code 500

Page 1: Sito Wordpress Penalizzato per Status Code 500

Non c'è solo Penguin o Panda...

Marco BoveImevolution [email protected]@MarcoBove

Page 2: Sito Wordpress Penalizzato per Status Code 500

Sono specializzato in Penalizzazioni e in Analisi Search Engine Friendly per progetti web di medie/grandi dimensioni.

Lavoro da oltre 14 anni come SEO, prima come freelance poi come CEO di Imevolution Srl, web agency che gestisce progetti di promozione online in settori altamente competitivi quali E-Commerce, Turismo e servizi online vari lavorando sia sul mercato italiano sia su quello estero."

Chi Sono

facebook.com/marco.bove

plus.google.com/+MarcoBove

twitter.com/MarcoBove

Page 3: Sito Wordpress Penalizzato per Status Code 500

Di Fronte a dati simili cosa pensereste del vostro sito??

Page 4: Sito Wordpress Penalizzato per Status Code 500

Oh my God!

Page 5: Sito Wordpress Penalizzato per Status Code 500

Chi sarà stato?

Uno dei 2 animaletti Bianco-Neri …. ….. O il buon Matt ??

Page 6: Sito Wordpress Penalizzato per Status Code 500

Potrebbero esserci molte altre cause, vediamone alcune: Il codice di tracciamento è stato rimosso o modificato e non traccia più a

dovere (capita molte più volte di quanto pensiate);

Un uso errato del file Robots.txt User-agent: *

Disallow: /

Un uso errato dei metatag robotsmeta name="robots" content="noindex,follow"

Un uso errato del rel=Canonical;

Problemi DNS, che per qualche impostazione sbagliata bloccano i bot di Google;

Sito Hackerato e riempito di contenuti spammosi;

Page 7: Sito Wordpress Penalizzato per Status Code 500

Ecco il nostro caso di studio.

Blog Wordpress online da circa 2 anni;

Settore di nicchia senza grossissima concorrenza;

Dominio nuovo, senza storico rischioso;

Tema Freemium, pochi plugin;

Contenuti validi e originali;

Profilo Link pulitissimo, pochissimi backlink tutti spontanei;

Sito estremamente veloce e senza problemi di caricamento;

Codici di tracciamento (non Google Analytics) installati correttamente;

Page 8: Sito Wordpress Penalizzato per Status Code 500

Come ci siamo accorti del problema

Cercando per la chiave topica (con cui era nelle primissime posizioni) a file Luglio 2013 il sito non è più visibile, nemmeno nelle prime 100 pagine.

Provo a cercare il dominio con “nomedominio.it” 0 risultati;

Provo su Google site:nomeadominio.it nessun risultato trovato;

Provo nei risultati cache, nessuna pagina presente nella cache di Google

Sito Bannato??? Cosa Avrò fatto di cosi grave?

Page 9: Sito Wordpress Penalizzato per Status Code 500

Prime analisi per capire il problema

Controllo le statistiche per capire da quanto il sito è in questo stato (dal 13 Luglio c’è un calo consistente di traffico;

Il sito non ha un Robots.txt con un “Disallow /” messo lì per errore;

Il sito non ha un meta robots “Noindex” inserito per errore manualmente o tramite qualche plugin;

Il sito non è stato “bucato”, tutte le pagine del sito sono pulite e senza scripts strani o malware o link verso siti poco raccomandabili;

Controllo il Webmaster Tools di Google che mi porta un generico errore 500 su alcune pagine, che controllo e che in quel momento si vedono benissimo.

Page 10: Sito Wordpress Penalizzato per Status Code 500

Prime analisi per capire il problema

Comincio ad Analizzare i log del server e qui ho la prima sorpresina:

Tutte le pagine del sito rispondono STATUS HTTP CODE 500*

* 5xx (Errore del server)Questi codici di stato indicano che si è verificato un errore interno del server durante il tentativo di elaborazione della richiesta. Questi errori sono tendenzialmente nel server stesso, non nella richiesta.

500 (Errore interno del server): Si è verificato un errore nel server, il quale non riesce a soddisfare la richiesta. https://support.google.com/webmasters/answer/40132?hl=it

Page 11: Sito Wordpress Penalizzato per Status Code 500

Prime analisi per capire il problema

Controllo anche con il Chrome Developer Tools (F12 → Network) , che mi dà errore 500 nel caricamento delle pagina, mentre tutti i singoli file vengono caricati, ecco perché le pagine vengono comunque caricate dal browser.

Ecco la causa della sparizione del sito dalle SERP, non è stato bannato, semplicemente i bot dei motori di ricerca ricevevano ad ogni richiesta di pagina un bel HTTP STATUS 500!

Page 12: Sito Wordpress Penalizzato per Status Code 500

Risoluzione Problema

Controllo di tutti i singoli file del Tema, con la certezza che il problema dovesse esserein un template che veniva richiamato in tutte le pagine del sito quindi particolareattenzione viene posta a header.php, footer.php e sidebar.php;

Nella sidebar troviamo una query scritta male e che andava in errore, ma invece di limitarsi a non mostrare i contenuti richiamati dalla query, a causa della funzione Wp_Die* faceva rispondere tutte le pagine con lo status 500.

La funzione Wp_Die non è sempre attiva, dipende dalla configurazione del server Apache e dalla versione PHP, per sicurezza fate sempre un controllo sulla vostra installazioneWordpress.

Wordpress stesso dice:This function complements the die() PHP function. The difference is that HTML will be displayed to the user. It is recommended to use this function only, when the execution should not continue any further. It is not recommended to call this function very often and try to handle as many errors as possible silently.

Page 13: Sito Wordpress Penalizzato per Status Code 500

Ecco la Causa del Problema

/** * Kill WordPress execution and display HTML message with error message. *This is the default handler for wp_die if you want a custom one for your * site then you can overload using the wp_die_handler filter in wp_die * @since 3.0.0 * @access private * @param string $message Error message. * @param string $title Error title. * @param string|array $args Optional arguments to control behavior. */function _default_wp_die_handler( $message, $title = '', $args = array() ) { $defaults = array( 'response' => 500 ); $r = wp_parse_args($args, $defaults); $have_gettext = function_exists('__'); if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) { if ( empty( $title ) ) {

Page 14: Sito Wordpress Penalizzato per Status Code 500

Risoluzione Problema

1) Correggo la query errata e magicamente le pagine ritornano a rispondere con codice di Stato 200;

2) Per evitare che in futuro un qualsiasi altro errore di query mi faccia riuscire il 500 modifico la funzione Wp_Die e di default faccio rispondere con il codice 200.

Il problema è comune:

http://wordpress.org/support/topic/500-internal-server-error-when-having-the-pluging-activated http://wordpress.org/support/topic/wp-38-conflict-something-else-500-error http://wordpress.org/support/topic/plugin-secure-invites-plugin-generates-false-500-errors http://mc-computing.com/ISPs/WordPress/500_server_error.html http://wordpress.stackexchange.com/questions/101533/wp-die-causing-500-internal-server-error

Page 15: Sito Wordpress Penalizzato per Status Code 500

Dopo qualche giorno....

Page 16: Sito Wordpress Penalizzato per Status Code 500

Grazie per l'attenzione

Page 17: Sito Wordpress Penalizzato per Status Code 500

Rimaniamo in Contatto

MARCO BOVE

[email protected]: 347 28 13 008

http://www.imevolution.it

facebook.com/marco.bove

plus.google.com/+MarcoBove

twitter.com/MarcoBove