2013-03-08 21 views
6

Arama motoru optimizasyonu (SEO) olması gereken bir backbone.js/marionette web sitesinde çalışıyorum. Java/spring RESTful backend ve Apache 2.2 web sunucusu kullanıyoruz. Şu anda hala erken aşamada iken, uygulamamızdaki pushstate'i uygulama aşamasındayım. Bugüne kadar bir çözüm olarak ile geldim neApache sunucusunda Backbone.js uygulaması için SEO - phantom.js ve node.js?

:

  • JavaScript etkin tarayıcılarda normal kullanıcılar için, tamamen istemci tarafı omurga uygulamasını kullanabilirsiniz.
  • Tüm yolların index.html sayfamızdaki tüm yolları yönlendirmek için, backbone.js doğru sayfayı döndürecek ve url formunu koruyacak şekilde Apache'nin mod_rewrite özelliğini kullanın. Bu kadar doğru çalışıyorum (eksi bir hata).
  • Apache'nin httpd.conf dosyasını kullanarak botlara/tarayıcılara göz atın ve node.js sunucumuza yeniden yönlendirmek için yeniden yazma kuralları oluşturun.
  • phantomjs öğesini kullanarak html/content oluşturun ve bunu web tarayıcısına döndürün.

Sitenin bot için tamamen işlevsel olması gerekmiyor, ancak doğru içeriği döndürmesi gerekiyor. Bıyık şablonlarını kullanıyoruz, ancak bir DRY sitesi istiyoruz ve site büyüdükçe herhangi bir java şablonu oluşturma işleminin inanılmaz derecede dağınık olacağını düşünüyoruz. Bu siteyi uzun yıllar boyunca umutluyoruz ve bir ton 3. parti kütüphaneye (en azından halihazırda olduğumuzdan daha fazla değil) bağlanmaya çalışıyoruz.

Bu konuda herhangi bir deneyim veya öneri var mı? Araştırmamdan, diğerleri biraz dikkatli, özellikle this related question. Javascript'te get istekleri yerine getirme konusunda botların "tıklaması" durumunda endişeleniyorum. Düşünceler ve tavsiye?

Önceden çok teşekkürler.

+0

Burada tam olarak soru nedir? –

+0

Bu iyi bir saldırı planı gibi görünüyor mu? Bunu daha önce yaptın mı, eğer öyleyse, herhangi bir sorunla karşılaştın mı? Kısıtlarımıza uyan alternatif bir çözüm önerebilir misiniz? Önde gelen tarayıcılar, tıklama isteği almak için tıkla ve bu bir sorun teşkil ediyor mu? Bu daha genel bir soru olsa özür dilerim. – Andrew

cevap

3

Çok kötü bir fikir, üzgünüm çok küntüm.

Ne yapmak istediğim şu:

Ben yukarı düz bir HTTP isteği üzerinden http://yoursite.com/path/to/resource vurursanız o zaman sunucu bu kaynak sayfası için html beni hizmet etmeli ve isterseniz o zaman, javascript kullanabilirsiniz Bu noktada tek sayfa uygulama yönü kadar "init". Oradan AJAX ve omurga ile gidiyorum eğer oradan tüm iyi yolları üzerinden dışarı gidiyor. Sonra bir url kopyalarsam, tarayıcımı kapatıp yeniden açtığımda yapıştırırım, aynı html'yi görmeyi beklemeliyim.

Bu yaklaşım, yalnızca SEO için değil, aynı zamanda sisteminizi kavramsal olarak tasarlamanın yanı sıra, yalnızca JS etkin tarayıcılar için değil, herkes için "çalışmanızı" sağlamanın yanı sıra, en iyi yaklaşım olduğunu kanıtlamıştır.

Her ne pahasına olursa olsun kaçınmak istediğiniz şey, tarayıcıları kandırmaya çalışmak ve onlara bir kullanıcının görebileceğinden farklı bir içerik beslemeye çalışmaktır. Bu, kara listeye yönelik bir reçete.

Özetle, sitenizi http yoluyla URL'lere bastığınızda tam html'yi alırsınız ve aynı url'yi tek sayfa uygulama modu ajax ile vurursanız, kısmi olarak elde etmeniz gerekir. senkronizasyon .... daha iyi mimari, daha az SEO kara listeleri!

+5

Google, html anlık görüntülerini başsız bir tarayıcıyla destekliyor gibi görünüyor: https://developers.google.com/webmasters/ajax-crawling/docs/html-snapshot –

+1

Wow ... Ağustos 2012'de güncellendi bile. şimdi yön. Bence "eşleştiğin" html'nin deli olduğunu görmek isterdin çünkü bu tür bir sahtekarlık seni ciddi bir kürek çekmeye alıştırıyordu ... Her ne kadar benim önerim bir uygulama mimari seviyesinden geliyorsa, Gerçekten sağlam bir uygulamanın tasarımını oluşturmaya yardımcı olacak. –

+0

Bunun benim için "Çok kötü bir fikir" gibi görünen kısmı sadece bot/paletli koklayıcı. PhantomJS anlık görüntüsü yalnızca botlara değil tüm isteklere sunulduğunda bu uygulama iyi olmaz mıydı? – twiz

İlgili konular