2011-01-25 24 views
2

私のサイトには頻繁に更新されるもののリストがあるページがあります。このリストは、jsonp経由でサーバーを呼び出し、jsonを元に戻してhtmlに変換することによって作成されます。速く滑らかです。Google検索の最適化ajaxコール

残念ながら、Googleではインデックスに登録できません。 Google's AJAX crawling guideに従ってこれを行う方法を読んだ後、私はちょっと混乱しており、明確化と確認が必要です:

ajaxページはルールのみを実装する必要がありますか? 私は現在、このようなものになるために必要があるだろう

[site]/base/junkets/browse.aspx?page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067 

のように、残りのURLを持っている:

[site]/base/junkets/browse.aspx#page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067 

とGoogleはこの

[site]/base/junkets/browse.aspx#!page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067 

のようにそれを呼び出したときに私が提供しなければなりませんhtmlスナップショット。

なぜ置き換えますか? #で? htmlスナップショットを作成するのは非常に面倒です。シンプルなリンクを提供するだけで十分でしょうか?私の場合、googleが物事のページにのみ索引を付けるなら、私は幸せになるでしょう。

答えて

4

に見えます。#!表記はあなたのAJAXアプリケーションではありませんあなたのapplictionが呼び出しになり、サービスのURLに、内住んページへのリンクに使用されるべきです私はexample.com/app/に行くことによって、あなたのアプリにアクセスした場合。たとえば、あなたが代わりにexample.com/app/#!page=1にリンクすることにより、クロールページを作ると思います。今

をGooglebotはリンクでそのURLを見たときに、代わりに発行することを意味しexample.com/app/#!page=1 –に行くのexample.com/app/の要求(サーバーにハッシュが送信されないことを思い出してください)– example.com/app/?_escaped_fragment_=page=1。要求に_escaped_fragment_が存在する場合は、コンテンツの静的HTMLバージョンを返すことがわかります。

なぜこのすべてが必要ですか? Googlebotはスクリプトを実行しません(JSONオブジェクトのインデックス方法もわかりません)。そのため、スクリプトが実行されてコンテンツが読み込まれた後、ユーザーの目の前に何が終わるのかわからなくなります。したがって、あなたのサーバは、AJAXyバージョンでユーザが最終的に見るもののHTMLバージョンを生成するという重労働をしなければなりません。

あなたの次のステップは何ですか?

まず、どちらか#!page=1(または何でも)を含み、またはあなたのアプリのHTMLに<meta name="fragment" content="!">を追加するためにアプリケーションを指すリンクを変更します。 (AJAX crawling guideの3項を参照してください。)

ユーザーがページを変更した場合(該当する場合)は、現在のページを反映するようにハッシュを更新する必要があります。 location.hash='#!page=n';を設定することもできますが、ページのハッシュを管理するのに便利なjQuery BBQ pluginを使用することをおすすめします。 (この方法で、ユーザーがアドレスバーで手動で変更を行った場合、ハッシュの変更を聞くことができます)警告:現在リリースされているBBQ(1.2.1)のバージョンではAJAXのクロール可能なURLはサポートされません。 Gitマスター(1.3pre)がありますので、grab it hereにする必要があります。

$.param.fragment.ajaxCrawlable(true); 

第二は、クエリ文字列に_escaped_fragment_の存在を検出するためにexample.com/app/にいくつかのサーバー側のロジックを追加する必要があり、静的なHTMLバージョンを返します:その後、ちょうどAJAXクロール可能なオプションを設定しますそれがあればページのここでは、creating HTML snapshotsに関するGoogleのガイダンスが参考になる場合があります。オプション3を追求したいと思うかもしれません。サービスを変更してJSONに加えてHTMLを出力することもできます。

+0

詳細な説明をありがとう。私は良いことを学んだ。私の主な(個人的な)牛肉は、クライアント上でC#とjavascriptを使用してサーバー上でコンテンツを生成する必要があります。 2つの図書館を同期させておくだけで、エラーが起こりやすくなります。 – AyKarsi

+0

@AyKarsi:それは余計な仕事ですが、今のところ世界の仕組みです。良いことは、[GooglebotのインデックスAJAXのページを作成する](http://code.google.com/web/ajaxcrawling/docs/faq.html#whatifnot)が追加作業なしに行われていることです。ですから、これは将来すべて必要ではないでしょう。 – josh3736

0

私は多かれ少なかれこれをあきらめました。あなたがgoolgeにあなたのディレクトリのインデックスを付けるためには、htmlをサーバ上に生成し、htmlのbdoyでそれを提供することに代わる方法はありません。

単純なhtmlバージョンのディレクトリを実装した.netユーザーコントロールをwrapしたセクションを追加しようとしました。しかし、Googleは無視することもできました..

私のディレクトリは削除されました。あなたはAJAXクロールガイドを誤解しているよう:(