6

私は、EmberJS と GitHub Pages を利用して、ブラウザー内でレンダリングされるブログ アプリケーションを作成するツールを作成しました。JavaScript を使用して Markdown ファイルを取得し、それらをアプリケーションの本体にレンダリングします。すべてのコンテンツは AJAX リクエストを介して取得されるため、コンテンツを Google などによってクロール可能にする最善の方法がわかりません。

PhantomJS を使用してリクエストを処理することを提案する多くの記事を読み ましたが、コンテンツは GitHub でホストされているため、サーバー側で何かを実行する方法はありません。 _escaped_fragment_

これに対する回避策 (コンテンツを GitHub にプッシュする前に何かを事前にレンダリングするなど) はありますか? それとも、JavaScript アプリケーションの欠点を経験しているだけですか?

4

5 に答える 5

2

問題は、Googlebot は基本的な JavaScript を実行できるかということです。

そうでない場合は、いいえ。私が読んだように、あなたのアプリはページをレンダリングするために JS サポートを必要とします。これにより、ボットに適したアクセス方法がなくなります.

はいの場合、はい:

JavaScript は 経由で url パラメータにアクセスできるためlocation.search、Google が属性を取得するための妥当な URL を作成できます。この URLhrefは、JS アプリによって解釈され、onclick属性内のユーザーに対してオーバーライドされます。

<a href="/?a=My-Blog-Post" onclick="someFunc(this.href);return false;">

これはアプリの onload 内のコードとペアになってlocation.search、Google が onload を実行して指定されたコンテンツを取得することを期待して、(クエリ文字列を解析した後に) 指定された url パラメーターに表示される .md を探してフェッチします。これは、多くのサイトのdomain.com/#!ajax/pathスタイル パスの変形です。どちらも完全にクライアント側ですが、クエリ文字列のバリアントは、ページが個別の URL として取得する価値があることを googlebot に示します。

これは、「Googlebot としてフェッチ」機能を備えたhttp://google.com/webmastersでテストできる場合があります。

于 2013-08-15T05:57:17.530 に答える
0

あなたは夕食に近づいて砂漠を食べ、野菜をじっと見つめました。

本当にやりたいことは、最初に AJAX なしでページを提供することです。JavaScript を必要とせずにページが正しく読み込まれたら、?ajax=1すべてのリクエストを追加するだけです。そうすればisset($_GET['ajax'])、ヘッダー、フッター、サイドバーなどの読み込みを避けることができます。その後、単純に匿名window.onclickを使用して、そこから離れてください。

サードパーティのソフトウェア (フレームワークを含む) を使用しない Web 3.0 テクノロジのサンプル ビデオはすべて、作成しようとしている最も厳密なコードを使用して構築されています...

http://www.youtube.com/watch?v=hZw8t-GVCB4

私のサイトの JavaScript を自由に見てください。今週末も喜んでお手伝いさせていただきます。

于 2013-08-09T22:08:56.210 に答える
-2

ビルド スクリプトがあるので、そこで PhantomJs を使用して静的な Web ページを生成してみませんか?

通常は静的ページを提供し、JS が有効になっている場合は AJAX ページにリダイレクトできます。

唯一のポイントは、Ember-router-hyperlink が検索エンジン ボットで使用できないことです。しかし、サーバーコードなしでは、これを処理する方法は絶対にないと思います!

于 2013-08-12T15:25:30.833 に答える