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
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 pushstatesIl 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 pushstatesC'è 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 cingolatoMentre 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.
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
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 –
Dovrebbero essere disposti esattamente sul loro sito per gli sviluppatori per rendere le applicazioni jax scansionabili – Teliren
Questo metodo è deprecato da Google e non è più consigliato. http://googlewebmastercentral.blogspot.co.uk/2015/10/deprecating-our-ajax-crawling-scheme.html – mrded
grazie per la tua risposta! cosa intendi per 'istantanee' e' frammenti'? –
È 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. –
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. –