2013-03-08 13 views
6

Sto lavorando su un sito Web backbone.jes/marionette che deve essere ottimizzato per i motori di ricerca (SEO). Stiamo usando il backend RESTful java/spring e un server web Apache 2.2. Attualmente sto implementando pushstate nella nostra app mentre è ancora nelle fasi iniziali.SEO per l'app Backbone.js su server Apache - phantom.js e node.js?

Quello che mi è venuta in mente finora come una soluzione:

  • Per gli utenti normali con i browser Javascript abilitato, utilizzare un'implementazione dorsale lato client puramente.
  • Utilizza il mod_rewrite di Apache per instradare tutti i percorsi alla nostra pagina index.html con il percorso intatto in modo tale che backbone.js restituisca la pagina corretta e l'url mantenga la sua forma. Ho funzionato molto correttamente (meno un bug).
  • Sniff per bot/crawler che utilizza il file httpd.conf di Apache e crea regole di riscrittura per reindirizzare i bot sul nostro server node.js.
  • Genera html/contenuto utilizzando phantomjs e restituiscilo al webcrawler.

Non abbiamo bisogno che il sito sia completamente funzionante per il bot, ma deve restituire il contenuto corretto. Utilizziamo i modelli di baffi, ma vogliamo un sito DRY e riteniamo che qualsiasi tipo di rendering di template java diventi incredibilmente disordinato man mano che il sito cresce. Speriamo di avere questo sito in giro per molti anni e non stiamo cercando di collegarci a una tonnellata di librerie di terze parti (almeno non molte di più di quelle già in nostro possesso).

Qualcuno ha qualche esperienza o consiglio su questo argomento? Dalla mia ricerca, altri sono un po 'diffidenti, in particolare this related question. Sono un po 'preoccupato se i bot "cliccano" in javascript o eseguono richieste di ottenere. Pensieri e consigli?

Grazie mille in anticipo.

+0

Qual è esattamente la domanda qui? –

+0

Questo suona come un buon piano di attacco? Lo hai già fatto prima, e se sì, hai avuto problemi? Suggeriresti una soluzione alternativa che si adatti ai nostri vincoli? I principali crawler cliccano e ricevono la richiesta e questo pone un problema? Mi scuso se questa è una domanda più generale però. – Andrew

risposta

3

Pessima idea, scusa, sono così schietto.

Che cosa si vuole fare è la seguente:

Se colpisco http://yoursite.com/path/to/resource tramite una richiesta HTTP verso l'alto quindi il server dovrebbe servire me down il codice HTML per la pagina di risorse e quindi, se si desidera, è possibile utilizzare javascript a quel punto per "avviare" l'aspetto dell'app singola pagina. Da lì se sto navigando tramite AJAX e le rotte backbone è tutto buono da lì in poi. Se poi copio un url, chiudo il mio browser e poi lo incollo quando riapilo, dovrei aspettarmi di vedere lo stesso html.

Questo approccio ha dimostrato di essere l'approccio migliore non solo per SEO, ma anche per progettare concettualmente il sistema, oltre a garantire "lavoro" per tutti, non solo per i browser veloci abilitati a JS.

Ciò che si vuole evitare a tutti i costi è cercare di ingannare i crawler e dar loro contenuti diversi da quello che un utente vedrebbe ... questa è una ricetta per una lista nera.

In sintesi, crea il tuo sito in modo che se si preme l'url tramite http si ottiene l'html completo e se si preme lo stesso url tramite la modalità app a pagina singola ajax, si ottiene il parziale necessario per mantenere tutto in sincronizzazione .... architettura migliore, meno blacklist SEO!

+5

Google sembra approvare istantanee html tramite un browser headless https://developers.google.com/webmasters/ajax-crawling/docs/html-snapshot –

+1

Wow ... che è stato aggiornato anche nell'agosto 2012, quindi potrebbe essere il loro direzione ora. Penso che vorrai essere pazzamente attento al fatto che l'HTML ti dà da mangiare "corrispondenze" perché quel tipo di spoofing ti portava a fare una pagaiata seria ... Indipendentemente dal fatto che avrei rispettato il mio suggerimento da un livello di architettura dell'applicazione, contribuirà a formare il design di un'app davvero robusta. –

+0

L'unica parte di ciò che mi sembra una "pessima idea" è il bot/crawler che annusa. Questa implementazione non andrebbe bene fintanto che lo snapshot fantasmaJS è servito a tutte le richieste, e non solo ai bot? – twiz