ページのレンダリングにはバックボーンを多用しています。すべてのデータはサーバーから json として渡され、バックボーンと口ひげを含む html がクライアント上で作成されます。これはSEOにとって大きな問題です。これを回避するために私が計画していた 1 つの方法は、リクエストがボットからのものかどうかを検出し、HtmlUnit のようなものを使用してサーバー上でページをレンダリングし、吐き出すことでした。いくつかの代替アイデアが大好きです。また、私が計画していることに欠陥があるかどうかも知りたいです。
5 に答える
プログレッシブ エンハンスメントと控えめな JavaScriptを使用してサイトを構築します。
重要な Ajax 処理を行う場合は、 history APIを使用してください。
次に、すべての実際の URL があれば、Google は問題になりません。
幅広いベスト プラクティスを満たすためにすべてをやり直すことが、回答の唯一の選択肢であるとは限りません。邪魔にならない Javascript アプローチを使用することを検討する十分な理由がありますが、JS が必要なサイトとしてこれを行うのには十分な理由があるかもしれません。あるふりをしましょう。
動的に入力されたクライアント テンプレートを使用して Backbone.js アプリケーションを実行している場合、これを実行するための最良の方法は、以下のリンクにあります。基本的には、ヘッドレス ブラウザに一連のナビゲーション コマンドを実行してすべてのユーザー/製品/ページを表示し、SEO の理由からすべてのステップで静的 html ファイルを保存するように指示することになります。
私が現在取り組んでいるプロジェクトでは、すべてのベースをカバーしようとしています.. バックボーン駆動のクライアント、pushstate uris、ブックマーク可能なページ、可能な場合は html フォールバック。私が採用したアプローチは、テンプレートに Mustache を使用し、それらをバックボーン ビュー用の素敵な小さなコンポーネントに分割し、生の形式でクライアントが利用できるようにすることです。ページが要求されると、サーバー上でテンプレートを処理して完全なページを生成し、制御したい要素にバックボーンを接続できます。
単純な設定ではありませんが、これまでのところ、障害に遭遇したことはなく、テンプレートを複製したこともありません. Mustache は「ラッパー」を実行しないため、使用可能な URL ごとにページ ラッパー テンプレートを作成する必要がありましたが、サーバー上で追加のコーディングを行うことでこれらを排除できるはずです。
計画では、一部のコンポーネントをインターフェースで必要な場合は純粋な js として、一部はサーバーでレンダリングし、必要に応じて js で拡張できるようにする予定です。
node.js を使用している場合は、rendrを使用します
Node.js を使用して、クライアントとサーバーで Backbone.js アプリをレンダリングします。
Google ajax クロール スキームの使用には長所と短所があります - 私はそれをソーシャル ネットワーキング サイト ( http://beta.playup.com ) に使用しましたが、結果はまちまちでした...
これを ruby ユーザー向けのラック ミドルウェアとして透過的に処理するための gem を作成しました (gem install 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 はアプリをさまざまな状態に分類する傾向があることがわかりました ( url) を、個別のインデックスとしてではなく、同じページのバージョンとして。beta.playup.com を検索してみてください - レンダリングされたコンテンツが URL 間で根本的に変化するにもかかわらず、1 つのインデックスのみがリストされます)。