2015-07-15 28 views
6

Sto leggendo this specification che è un accordo tra server Web e crawler dei motori di ricerca che consente la visualizzazione dei contenuti creati dinamicamente ai crawler. Si dice che per consentire a un crawler di indicizzare l'applicazione html5 è necessario implementare il routing utilizzando #! negli URL. In angolare html5mode(true) ci liberiamo di questa parte dell'hash dell'URL. Mi chiedo se questo impedirà ai crawler di indicizzare il mio sito web.html5mode (true) interessa i crawler di ricerca di google

risposta

12

Risposta breve - No, html5mode non rovinerà l'indicizzazione, ma continua a leggere.


Nota importante: Sia Google e Bing possono strisciare contenuti basati su AJAX senza istantanee HTML

Lo so, la documentazione si collega a dice il contrario, ma circa un anno o due fa hanno ufficialmente annunciato che gestire il contenuto AJAX senza la necessità di snapshot HTML, purché si utilizzino i pushstates, ma gran parte della documentazione è vecchia e purtroppo non aggiornata.

SEO utilizzando pushstates

Il requisito per AJAX strisciare a lavorare fuori dalla scatola è che si sta modificando il vostro URL utilizzando pushstates. Questo è esattamente ciò che html5mode in Angular fa (e anche ciò che fanno molti altri framework). Quando i pushstates sono in attesa, i crawler attenderanno le chiamate ajax e javascript aggiornerà la pagina prima di indicizzarla. Puoi anche aggiornare cose come il titolo della pagina o anche i meta tag nel tuo router e indicizzerà correttamente. In sostanza non è necessario fare nulla, non vi è alcuna differenza tra i siti di rendering lato server e lato client in questo caso.

Per essere chiari, molti strumenti di analisi SEO (come Moz) sputeranno gli avvisi sulle pagine che utilizzano i pushstates. Questo perché quegli strumenti (e i loro rappresentanti se si parla con loro) sono al momento della scrittura non aggiornati, quindi ignorarli.

Infine, assicurati di essere non utilizzando il meta-tag del frammento dal basso quando si esegue questa operazione. Se hai quel tag, i crawler penseranno che tu voglia usare il metodo non-pushstates e le cose potrebbero essere incasinate.

SEO senza pushstates

C'è molto poco motivo per non utilizzare pushstates con angolare, ma se non è necessario seguire le linee guida legate alla domanda. In breve, crei istantanee del codice html sul tuo server e poi usi il meta tag fragment per cambiare il tuo url-frammento in "#!" invece di "#".

<meta name="fragment" content="!" /> 

Quando un crawler trova una pagina come questa sarà rimuovere la parte frammento di URL e richiede invece l'url con il parametro _escaped_fragment_, e si può servire la pagina snapshotted in risposta. Dando al crawler una normale pagina statica da indicizzare.

Si noti che il meta-tag del frammento deve essere utilizzato solo se si desidera attivare questo comportamento. Se stai utilizzando i pushstates e vuoi che la pagina indicizzi in questo modo, non utilizzare questo tag.

Inoltre, quando si utilizzano le istantanee in Angular si può avere html5mode attivo. In html5mode il frammento è nascosto ma è ancora tecnicamente esistente e attiverà comunque lo stesso comportamento, assumendo che il meta-tag del frammento sia impostato.

Un avvertimento - Facebook cingolato

Mentre sia Google e Bing esegue la scansione delle pagine AJAX senza problemi (se si utilizza pushstates), Facebook non lo faranno. Facebook non capisce il contenuto di ajax e richiede ancora soluzioni speciali, come le istantanee html fornite specificamente al bot di Facebook (user-agent facebookexternalhit/1.1).


Edit - mi dovrebbe probabilmente dire che ho schierato i siti con tutte queste versioni. Entrambi con html5mode, meta tag di frammenti e snapshot e senza snapshot e semplicemente facendo affidamento sulla scansione di pushstate. Funziona tutto bene, tranne per i pushstates e Facebook, come indicato sopra.

+0

grazie per la tua risposta! cosa intendi per 'istantanee' e' frammenti'? –

+0

È tutto nel documento a cui ti sei collegato nel tuo post originale. Quando un crawler incontra una pagina che contiene #! come parte dell'URL reindirizzerà a un URL che invece contiene il parametro _escaped_fragment_. Puoi quindi cercarlo sul tuo server e pubblicare un'istantanea HTML pre-generata della tua pagina invece della pagina angolare dinamica. Google ha creato lo standard e Bing (e forse Facebook, non è sicuro) lo seguirà, ma come detto sopra è vecchio e non ne hai più bisogno per Google e Bing. –

+0

Quindi per istantanee intendo le istantanee HTML pre-generate utilizzate dall'intero metodo dei frammenti di escape. E quando ho menzionato il meta-tag del frammento, menziono quello che Teliren ha menzionato nella sua risposta. –

0

Per consentire l'indicizzazione della vostra applicazione AJAX, si deve aggiungere speciale meta tag nella sezione head del documento:

<meta name="fragment" content="!" /> 

Fonte: https://docs.angularjs.org/guide/$location#crawling-your-app

Verso l'aspetto di fondo per la scansione del tuo app

+0

grazie, ho visto quel requisito. Ma mi interessa sapere se è sufficiente e sto cercando la risposta di qualcuno che ha usato html5mode nell'app di angular e che ha esperienza con i crawler –

+0

Dovrebbero essere disposti esattamente sul loro sito per gli sviluppatori per rendere le applicazioni jax scansionabili – Teliren

+0

Questo metodo è deprecato da Google e non è più consigliato. http://googlewebmastercentral.blogspot.co.uk/2015/10/deprecating-our-ajax-crawling-scheme.html – mrded