7

Ho recentemente creato una pagina web utilizzando Angularjs e attualmente sto cercando di farlo indicizzare da Google utilizzando pushstate.Indicizzazione dell'app angularjs - Googlebot-simulazione vs sito: dominio

Ho fatto abbastanza abit di ricerche e ho scoperto che posso utilizzare in Googlebot-simulaterGoogle Webmaster tools per simulare un Google-visita sul mio sito, e vedere come i bot vedere mia pagina web vs ciò che gli utenti vedono.

Qui il risultato sembra buono, Google vede esattamente le stesse cose dei miei utenti e tutte le pagine/sottopagine ottengono lo stato di partially o fully.

Un altro modo in cui sono stato informato, stamattina, per vedere cosa vede sul mio sito Web Google googling con site:domainname. Ecco un elenco di tutte le pagine/sottopagine Google ha cached e facendo clic sui diversi collegamenti, si ottiene una vista in cui viene mostrata la rispettiva pagina.

Qui è erano ho un po 'preoccupato che mi mancava qualcosa, perché indipendentemente dallo stato partially/fully mie pagine ricevono dal Goolgebot-simulation, quando guardo le mie pagine (utilizzando il secondo metodo), le pagine sono tutte in bianco .

È la prima volta che indicizzo le pagine Web e ho provato per giorni, ma senza fortuna. C'è qualcuno che può dire cosa sto facendo di sbagliato/missino, o almeno punto nella giusta direzione? O dovrei essere un po 'più paziente?

+0

Ive ha aggiunto una taglia in cui sono nella stessa identica situazione. –

+0

Ehi Ho affrontato lo stesso problema, quindi ho cercato di mettere insieme uno strumento per aiutare a risolvere il problema - https://github.com/jjbskir/angular-prerender - prerender il tuo sito per renderlo più SEO friendly e non richiede un servizio di back-end. – jjbskir

risposta

1

La risposta da Johannes Ferner non è corretto. In passato, Google era stato molto lento nell'aggiornare i propri documenti, ma ha annunciato ufficialmente che gestiscono le pagine AJAX senza la necessità di snapshot HTML purché si utilizzino i pushstates. Bing ha seguito la suite e gestisce anche i pushstates.

Come esempio, cercare il sito: yoamoseguros.com e controllare i risultati memorizzati nella cache. La pagina è costruita in Angolare e viene caricata completamente utilizzando AJAX e spinge, e mostra e indicizza bene.

E ignorare le pagine spezzate, ho eseguito un tentativo fallito alcuni giorni fa con un reindirizzamento completamente interrotto che ha incasinato tutto e Google ha avuto il tempo di indicizzare le pagine rotte prima che avessi la possibilità di rimuoverle. L'unica volta che la mia roba indicizzato veloce ...:/


Quindi, se si utilizza pushstates (html5mode on) e le sue pagine non viene mostrato correttamente da Google poi c'è qualcos'altro. Controlla il tuo file robots.txt, stai impedendo a Google di leggere contenuti statici come file js o immagini? Ha bisogno di accedere a file come questo per poter indicizzare correttamente la pagina.

Inoltre, assicurati che i tuoi frammenti siano solo "#" e non "#!". In quest'ultimo caso, Google supporrà che tu voglia utilizzare le istantanee html e proverà a trovarle, e potrebbe non riuscire. Pertanto, se si desidera utilizzare la versione più semplice dello stato di pushstate, assicurarsi di non utilizzare "#!".


Come nota finale, Facebook fa NON pushstates di supporto. Quindi Facebook avrà ancora bisogno di istantanee (o semplicemente di og-tag hard-coded in index.html a seconda del tipo di contenuto che hai).

1

Alcune informazioni:

pushstate non ha nulla a che fare con l'indicizzazione pagina; È solo lì per manipolare la cronologia del browser, simulando i cambiamenti di URI mentre in realtà la SPA (applicazione di pagina singola, ovvero la tua app angolare) sta eseguendo il routing internamente senza ricaricare la pagina. (Angolare chiama anche il HTML5Mode)

Javascript e il Googlebot:

Mentre il google-bot (o qualsiasi altro search-crawler) è fondamentalmente solo un browser senza testa, senza la funzionalità di esecuzione pagine il codice JavaScript, non vedrà il contenuto generato dinamicamente.

Per indicizzare le SPA e consegnare il contenuto dinamico ai crawler è necessario fornire e servire un'istantanea HTML statica della pagina generata dinamicamente ai bot.

Se non si usa uno snapshot HTML statico l'unica cosa che il bot di Google vede è qualcosa di simile

<html> 
<body> 

<div ui-view="mainContent"></div> 

</body> 

ulteriori informazioni: https://support.google.com/webmasters/answer/174992?hl=en

Per generare queste istantanee è possibile utilizzare uno dei i vari servizi di indicizzazione SPA come https://prerender.io/ (gratuito se lo si ospita da soli o pagato la versione ospitata). Quello che fanno è avviare un browser con JS-Support (phantomjs) che sta quindi aprendo tutti gli URL forniti (tramite un elenco statico, crawling, sitemap.xml ...) che esegue tutto il codice JavaScript sulla pagina, in attesa del pagina per finire (o per un timeout o un determinato evento che devi attivare) e quindi salvare la versione statica (= snapshot) della pagina.

Per assicurarsi che i bot trovino quelle istantanee, è necessario gestire e fornire escaped_fragment, che sarebbe un # di default o sovrascriverlo con <meta name="fragment" content="!"> se # è già utilizzato all'interno dell'applicazione.

Se si utilizza il middleware fornito da prerender.io (non ho nulla a che fare con il progetto, semplicemente usandolo) molte delle cose difficili sono già gestite.

maggiori informazioni qui: https://developers.google.com/webmasters/ajax-crawling/docs/specification?hl=en

+0

Hey Johannes puoi dare un'occhiata alla mia domanda di followup che uso prerender: http://stackoverflow.com/questions/32696549/prerender-io-subpages-redirect-to-index –

+0

pushstate ha _qualcosa_ da fare con l'indicizzazione della pagina . a differenza dello stato hash, lo stato pushstate necessita di URL reali in modo che la pagina possa essere aggiunta ai segnalibri e ricaricata. l'idea è di ricreare gli stessi schermi come un hard-load, ma senza ricaricare. se non si dispone di URL effettivi dietro il percorso del server di indirizzi SPA, è necessario utilizzare invece i frammenti. se entrambe le corrispondenze SPA e "REST" corrispondono, Google non avrà problemi a eseguire la scansione del tuo sito e gli utenti riceveranno aggiornamenti rapidi delle pagine. – dandavis

+0

Questo non è più corretto. Mentre Google è stato lento nell'aggiornare la loro documentazione, indicizzerà correttamente i siti utilizzando pushstate senza la necessità di snapshot html. –