6

私は、検索エンジン最適化(SEO)が必要なbackbone.js/marionetteWebサイトに取り組んでいます。java /springRESTfulバックエンドとApache2.2Webサーバーを使用しています。私は現在、アプリにプッシュステートを実装する過程にありますが、まだ初期段階です。

私がこれまでに考え出した解決策は次のとおりです。

  • javascriptが有効なブラウザを使用している通常のユーザーの場合は、純粋にクライアント側のバックボーン実装を使用してください。
  • Apacheのmod_rewriteを使用して、backbone.jsが正しいページを返し、URLがその形式を保持するように、パスをそのままにしてすべてのパスをindex.htmlページにルーティングします。私はこれだけ正しく動作しています(マイナス1つのバグ)。
  • Apacheのhttpd.confファイルを使用してボット/クローラーをスニッフィングし、ボットをnode.jsサーバーに再ルーティングするための書き換えルールを作成します。
  • phantomjsを使用してhtml/contentを生成し、それをwebcrawlerに返します。

ボットに対してサイトが完全に機能している必要はありませんが、正しいコンテンツを返す必要があります。私たちは口ひげのテンプレートを使用していますが、DRYサイトが必要であり、サイトが大きくなるにつれて、あらゆる種類のJavaテンプレートのレンダリングが非常に乱雑になると感じています。私たちはこのサイトを何年にもわたって利用できることを望んでおり、大量のサードパーティライブラリに接続しようとはしていません(少なくとも私たちがすでに持っているよりも多くはありません)。

このトピックに関する経験やアドバイスはありますか?私の調査によると、他の人は少し警戒しています。特にこの関連する質問です。ボットがjavascriptで「クリック」するのか、getリクエストを実行するのかについては少し心配です。考えやアドバイス?

よろしくお願いします。

4

1 に答える 1

3

非常に悪い考えです、申し訳ありませんが私はとても鈍いです。

あなたがしたいことは次のとおりです。

ストレートアップHTTPリクエストを介してhttp://yoursite.com/path/to/resourceにアクセスした場合、サーバーはそのリソースページのhtmlを提供する必要があります。必要に応じて、その時点でjavascriptを使用して「シングルページアプリの側面を初期化します。そこから、AJAXを介してナビゲートし、バックボーンルートを使用すると、そこからすべてがうまくいきます。次にURLをコピーし、ブラウザを閉じて、再度開いたときに貼り付けると、同じhtmlが表示されるはずです。

このアプローチは、SEOだけでなく、システムを概念的に設計し、高速のJS対応ブラウザーだけでなくすべての人に「機能」させるための最良のアプローチであることが証明されています。

絶対に避けたいのは、クローラーをだまして、ユーザーに表示されるものとは異なるコンテンツを提供しようとすることです...これはブラックリストのレシピです。

要約すると、http経由でURLをヒットした場合、完全なhtmlを取得し、シングルページアプリモードajax経由で同じURLをヒットした場合、すべての同期を維持するために必要な部分を取得するようにサイトを構築します... 。より良いアーキテクチャ、より少ないSEOブラックリスト!

于 2013-03-08T22:32:54.347 に答える