我們大量使用骨幹來呈現我們的頁面。所有的數據都是從服務器以json形式傳遞的,而html則是在骨幹和小鬍子的客戶端上創建的。 這給SEO帶來了一個大問題。我計劃解決這個問題的一種方法是檢測請求是否來自機器人,並使用諸如HtmlUnit之類的東西來呈現服務器上的頁面並將其吐出。 會愛一些替代的想法。也想知道我打算做什麼有缺陷。骨幹js重頁面的SEO
回答
我不一定非要這樣做,唯一的選擇就是重做一切,以滿足廣泛的最佳實踐。有一個很好的理由可以考慮使用一種毫不鬆懈的JavaScript方法來做事,但也許有一個很好的理由是你將它作爲一個JS所需的站點。假設有。
如果你正在做一個Backbone.js的應用與動態填充客戶端模板,我能想到的做,這是在下面的鏈接的最佳途徑。基本上,這相當於告訴無頭瀏覽器運行一組導航命令來查看所有用戶/產品/頁面,並在搜索引擎優化原因的每一步保存一個靜態HTML文件。
What's the least redundant way to make a site with JavaScript-generated HTML crawlable?
構建使用Progressive Enhancement和Unobtrusive JavaScript您的網站。
當您執行重要的Ajax內容時,請使用the history API。
然後你有一切的真實網址和谷歌將不會是一個問題。
在一個項目中,我是做什麼工作的我試圖涵蓋所有的基礎..骨幹驅動的客戶端,pushState的URI的,可收藏的網頁和HTML回退在可能的情況。我採用的方法是使用Mustache作爲模板,將它們分解爲用於我的骨幹視圖的漂亮的小組件,並使它們以原始格式提供給客戶端。當請求一個頁面時,可以在服務器上處理模板以產生一個完整的頁面,而主幹連接到它想要控制的元素。
這不是一個簡單的設置,但到目前爲止,我還沒有打任何路障和我沒有任何複製的模板。我不得不爲每個可用的url創建一個頁面包裝器模板,因爲Mustache不會執行「包裝器」,但我認爲我應該能夠通過服務器上的一些額外編碼消除這些模板。
的計劃是可以有一定的組件,其中所要求的接口和一些由服務器提供,而且與在期望的js增強純JS ..
您是否分享模板或模板處理代碼?這個想法一段時間以來一直很有趣。如果使用node.js,看起來好像模板和邏輯可以共享。如果使用RoR,似乎可以共享模板,因爲ERB語法大多與JS模板兼容 – SimplGy
我們正在服務器和客戶端之間共享模板。在服務器上運行Python,我們使用Pystache來處理模板。我們對列表中的項目使用partials,並使部分模板可用於客戶端代碼,以便在需要時將項目添加到列表中。我認爲所需的邏輯通常會有所不同,具體取決於您是在客戶端還是在服務器上,但我們在rpc處理程序和頁面處理程序之間共享服務器端邏輯,方法是讓它們在公共控制器上的權重非常輕,並且調用方法/模型對象。 – lecstor
有正反向使用谷歌AJAX檢索方案 - 我用了一個社交網站(http://beta.playup.com),結果好壞參半...
我寫了一個寶石透明地處理這個作爲機架中間件Ruby用戶(創業板安裝google_ajax_crawler)(https://github.com/benkitzelman/google-ajax-crawler)
閱讀關於它在http://thecodeabode.blogspot.com.au/2013/03/backbonejs-and-seo-google-ajax-crawling.html
總之,儘管我成功地將呈現的dom快照發布到請求搜索引擎,並且我可以看到使用Google抓取的網站管理員工具,例如11,000個網頁,但我發現Google更傾向於將應用各種狀態(網址)作爲同一頁面的版本,而不是作爲單獨的索引。嘗試搜索beta.playup.com - 即使呈現的內容在URL之間發生根本性變化,也只列出一個索引)....
如果您正在使用Node.js的使用rendr
渲染在客戶端和服務器上的應用程序Backbone.js的使用Node.js的
- 1. JSONP骨幹js
- 2. 骨幹頁面轉換
- 3. 在骨幹js中的分頁
- 4. 骨幹JS型號
- 5. 骨幹JS混亂
- 6. 骨幹js - htaccess重寫規則錯誤
- 7. 骨幹分頁當前頁面錯誤
- 8. 未定義主幹js的骨幹
- 9. 事件從CSHTML頁面骨幹作用
- 10. 骨幹抓取頁面加載收集
- 11. 骨幹路由器和頁面刷新
- 12. 骨幹 - 查看不更新頁面
- 13. 骨幹:引導加載頁面上require.js
- 14. 骨幹處理索引頁面佈局
- 15. 骨幹JS與骨幹關係的嵌套模型
- 16. 骨幹js。比較日期
- 17. 骨幹JS事件結合
- 18. 骨幹JS - 與價值
- 19. 骨幹JS追加視圖
- 20. 骨幹JS事件負載
- 21. 骨幹並要求js
- 22. 骨幹js集合問題
- 23. 骨幹JS集合解析
- 24. 骨幹js傳遞論據
- 25. Ajax隊列骨幹js
- 26. 嵌套意見骨幹JS
- 27. 骨幹使用外部js
- 28. 使用骨幹JS在MVC
- 29. 骨幹js和元素
- 30. 要求js和骨幹
我覺得除了SEO的複雜性(誰在乎沒有JS的人),有一些非常吸引人的RESTful服務,其中服務器端語言不負責吐出大量意大利麪條HTML,或者甚至這是MVCed仍然將數據綁定到html的固定視圖。 –