comunicare con i motori di ricerca senza essere fraintesi: alla scoperta del protocollo http
TRANSCRIPT
1
SIMONE RINZIVILLOCTO & Co-Founder, Mamadigital
COMUNICARE CON I MOTORI DI RICERCA SENZA ESSERE FRAINTESI:
ALLA SCOPERTA DEL PROTOCOLLO HTTP
ABOUT
2
Simone Rinzivillo CTO & Co-Founder, Mamadigital @[email protected]
Con 12 anni esperienza nel Search Engine Marketing, è il responsabile del reparto digital marketing di Mamadigital di cui coordina le strategie di Search Marketing per importanti clienti italiani ed internazionali.
Mamadigital è una agenzia indipendente, focalizzata nel Marketing digitale, con una fortissima specializzazione nel Search Engine Marketing e nella Comunicazione online innovativa. (www.mamadigital.com)
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
COMUNICARE CON I MOTORI DI RICERCA
5
OBIETTIVO 1GARANTIRE LA COMPATIBILITÀ CON LE LOGICHE DI
CRAWLING DEI MOTORI DI RICERCA
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
COMUNICARE CON I MOTORI DI RICERCA
7
CI SONO CASI IN CUI DEVI NECESSARIAMENTE SAPER PARLARE LA LORO LINGUA… altrimenti
“Googlebot esci da questo sito!!!”
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
PREMESSA: IL SISTEMA CLIENT/SERVER
8
CLIENT1. Abilita l’utente a spedire la richiesta di informazione.2. Codifica la richiesta utilizzando un protocollo comprensibile al server.3. Decodifica la risposta del server in modo che l’utente possa leggerla.
SERVER1. Riceve la richiesta del client.2. Codifica la richiesta utilizzando un protocollo comprensibile al client.3. Risponde al client spedendo l’informazione richiesta.
ClientUtenteInvio richiesta
Server
Elaborazione richiesta
ServerClientUtente Ricezione risposta
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
PREMESSA: IL SISTEMA CLIENT/SERVER
9
CLIENT1. Abilita l’utente a spedire la richiesta di informazione.2. Codifica la richiesta utilizzando un protocollo comprensibile al server.3. Decodifica la risposta del server in modo che l’utente possa leggerla.
SERVER1. Riceve la richiesta del client.2. Codifica la richiesta utilizzando un protocollo comprensibile al client.3. Risponde al client spedendo l’informazione richiesta.
ClientUtenteInvio richiesta
Server
Elaborazione richiesta
ServerClientUtente Ricezione risposta
ZOOM
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
PREMESSA: IL SISTEMA CLIENT/SERVER
10
Invio richiestaServer
Elaborazione richiesta
ServerRicezione risposta
Formulazione del messaggio di risposta
Definizione degli status code HTTP
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
IL PROTOCOLLO HTTP
11
Il protocollo HTTP
Funziona su un meccanismo richiesta/risposta (client/server): il client esegue una richiesta e il server restituisce la risposta.
Vi sono quindi due tipi di messaggi HTTP: messaggi RICHIESTA e messaggi RISPOSTA.
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
MESSAGGIO DI RICHIESTA HTTP
12
RIGA DI RICHIESTA
Header
INVIATA DAL BROWSER O SPIDER DEL MOTORE DI RICERCA
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
MESSAGGIO DI RISPOSTA HTTP
13
Riga di risposta
Header
RISPOSTA RESTITUITA DAL WEB SERVER
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
STATUS CODE HTTP
14
I Codici stato HTTP definiscono L’ESITO DELLA RISPOSTA.
200 ok----------------301 moved permanently302 found 303 See other307 temporary redirect----------------404 not found403 forbidden410 gone----------------500 internal server error
3xx redirection
2xx success
4xx client error
5xx server error
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
STRUMENTI
15
• LIVE HTTP HEADER per Chrome e Firefox
• XENU
• SCREAMING FROG
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
COME INTERVENIRE
16
A livello di WEB SERVER
A livello di LINGUAGGIO DI PROGRAMMAZIONE (server side)
A livello di CMS (es. plugin, moduli ecc..)
WEB SERVER
LINGUAGGIO DI PROGRAMMAZIONE
CMS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
COME INTERVENIRE
17
WEB SERVER
LINGUAGGIO DI PROGRAMMAZIONE
CMS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 - SCENARIO
19
GESTIONE DI UN CASO DI INDICIZZAZIONE FUORI CONTROLLO
SITO: community di sviluppatori app per IOS
NUMERO CONTENUTI: circa 6.000
NUMERO documenti indicizzati: oltre 200.000
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 - CAUSA
20
La gestione del tagging dei contenuti consente di selezionare diversi filtri, con sequenze differenti gestite con l’aggiunta di parametri in querystring.
http://www.sito.it/categoria-A?tag1=A&tag2=B&tag3=C http://www.sito.it/categoria-A?tag1=B&tag2=A&tag3=C http://www.sito.it/categoria-A?tag1=C&tag2=A&tag3=B http://www.sito.it/categoria-A?tag1=B&tag2=C&tag3=C …
Stesso contenuto raggiungibile su un elevato e non controllabile insieme di URL
oltre 200.000 documenti INDICIZZATI E DUPLICATI, AUMENTO SCONSIDERATO DEL CRAWLING BUDGET.
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 - SOLUZIONE
21
DISCRIMINARE LE URL DA NON FAR INDICIZZARE: QUELLE CON L’ECCEDENZA DI TAG IN QUERYSTRING.
Soluzioni ipotizzate:
1° ipotesi di SOLUZIONE Blocco delle URL dalla
Console di Google
PRO CONTRO
Facilità di implementazione
Non compatibile con la struttura delle URL del sito, risolutiva solo per Google
2° ipotesi di SOLUZIONE Noindex all’interno del meta robots
delle pagine in eccesso
PRO CONTRO
Facilità di implementazione
Lunghi tempi di reazione, impatto negativo sul crawling budget
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 - SOLUZIONE
22
SOLUZIONE Manifestare l’esigenza al motori in modo chiaro e diretto
“io ho rimosso le pagine, fallo anche te”
Tradotto in spiderese J
“410 gone”
PRO CONTRO
Messaggio chiaro e reazione immediata da parte dei Search Engines
Nessuno!
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 – RISPOSTA HTTP
23
HTTP Status Code: HTTP 1.1 410 goneDate: Sat, 13 Nov 2015 17:29:19 GMTServer: Apache/2.2.16 (Debian)X-powered-by: PHP/5.3.3-7+squeeze19Set-cookie: ArrayExpires: Thu, 19 Nov 1981 08:52:00 GMTCache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Content-encoding: gzipContent-length: 9591Connection: closeContent-type: text/html; charset=UTF-8
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 1 - RISULTATO
24
RISULTATO OTTENUTO
NUMERO CONTENUTI: circa 6.000
NUMERO DOCUMENTI INDICIZZATI: circa 6.000
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
IL PROTOCOLLO HTTPS
25
AGOSTO 2014 GOOGLE dichiara che L’HTTPS È UN FATTORE DI RANKING
senza evidenti riscontri nelle SERP.
SETTEMBRE 2015
INIZIANO A VERIFICARSI frequenti (e apparenti) EPISODI DI CALI DELLE VISITE DA GOOGLE IN PRESENZA DELLA
DUPLICAZIONE del sito non gestita TRA HTTP E HTTPS
HTTPS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - SCENARIO
26
HTTP VS HTTPS
SITO: servizi di MKT online multilingua (3 domini)
PROBLEMA: Perdita di visite su tutti e 3 i domini a partire dal 21 settembre 2015
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - RIFLESSIONI
27
1. La recente gestione della migrazione dei siti e le redirezioni permanenti erano gestite correttamente
2. Ad un controllo manuale il sito era stabilmente nei risultati
3. Analytics e la Search Console mostravano entrambi numeri in calo
Search Console click dominio .it
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - RIFLESSIONI
28
Search Console click versione HTTPS del dominio .it*
* La Search Console del sito HTTP non contiene i dati della versione HTTPS, va fatta una attivazione specifica
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - RIFLESSIONI
29
* La Search Console del sito HTTP non contiene i dati della versione HTTPS, va fatta una attivazione specifica
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
SITO HTTP
SITOHTTPS
CASE HISTORY 2 - RIFLESSIONI
30
* La Search Console del sito HTTP non contiene i dati della versione HTTPS, va fatta una attivazione specifica
SITOHTTP
SITOHTTPS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - RIFLESSIONI
31
SITO HTTP
SITOHTTPS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
SOLUZIONE Gestire la duplicazione del sito a favore della versione HTTP*
Tradotto in spiderese J
“301 moved permanently”
CASE HISTORY 2 - SOLUZIONE
33
* Dopo un confronto con il cliente si è deciso di mantenere la versione HTTP
RewriteCond %{ENV:HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
CASE HISTORY 2 - RISULTATO
34
4 NOVEMBRE ATTIVAZIONE REDIRECT
SITOHTTP
SITOHTTPS
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
GESTIRE IL PROTOCOLLO HTTPS
35
Configurare il certificato TLS sul server
Attivare la pubblicazione del sito attraverso il protocollo HTTPS
Verificare che tutte le risorse (css, immagini, Javascript) siano disponibili nella versione HTTPS del sito
Verificare che i riferimenti nell’HTML siano correttamente in HTTPS (canonical, link, immagini)
Attivare le redirezioni permanenti dal sito HTTP al sito HTTPS per evitare la duplicazione
Verificare il corretto tracciamento di Google Analytics
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
HTTPS - APPROFONDIMENTI
36
HTTPS as a ranking signal http://googlewebmastercentral.blogspot.it/2014/08/https-as-ranking-signal.html
New Google Search Console Notifications For SSL/TLS Mismatch Errors https://www.seroundtable.com/google-ssl-tls-warnings-search-console-21172.html
Sito Sparito dopo certificato SSL http://www.giorgiotave.it/forum/google/237453-sito-sparito-dopo-certificato-ssl.html
Redirect da https a http su server linuxhttp://www.giorgiotave.it/forum/mod-rewrite-e-tecniche-di-url-redirect/ 238154-redirect-da-https-http-su-server-linux.html
Google: HTTPS Content Mismatch Errors May Not Get Ranking Boost In Futurehttps://www.seroundtable.com/google-https-mismatch-ranking-20823.html
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
HTTP/2 – COS’È
37
HTTP/2 È LA NUOVA VERSIONE DEL PROTOCOLLO HTTP concepito per migliorare le performance di erogazione
dei servizi web.
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
HTTP/2 – IMPATTI SULLE PERFORMANCE
40
Le novità più rilevanti con impatti sulla velocità di caricamento e sulla SEO.
• Caricamento degli elementi in parallelo di una pagina su una singola connessione TCP (possibilità di gestire richieste e risposte nella stessa connessione).
• La maggior compressione dei dati degli HTTP headers
Test: http://http2.loadimpact.com/entry/
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
HTTP/2 - APPROFONDIMENTI
42
What Ops Needs to Know about HTTP/2https://devcentral.f5.com/articles/what-ops-needs-to-know-about-http2
HTTP/2: A Fast, Secure Bedrock for the Future of SEOhttps://moz.com/blog/http2-a-fast-secure-bedrock-for-the-future-of-seo
7 Tips for Faster HTTP/2 Performancehttps://www.nginx.com/blog/7-tips-for-faster-http2-performance/
SIMONE RINZIVILLO – [email protected] - @SRINZIVILLO
Simone Rinzivillo CTO & Co-Founder, Mamadigital
@srinzivillo
www.mamadigital.com
Grazie dell’attenzione