web-dev-qa-db-ja.com

Googlebotがリンクを見つけた場合、それをクリックするか、ナビゲートしますか?

私のサイトでは、pushStateとJSONデータを使用してコンテンツを表示しています。したがって、たとえば、これは私のページに表示される場合があります。

<a href="/some/page">some page</a>

JavaScriptはデフォルトのアクション(リンクをたどる)を防ぎ、代わりにビューをレンダリングします(/ getjson?some_pageなどの異なるAPIを使用)。

$('[href]').click(function(){
    history.pushState(...);
    handleURL(...);
});

サーバーが/ some/pageのリクエストに事前にレンダリングされたバージョンで応答すると仮定します。

私の質問は:

  1. googlebotは事前にレンダリングされたバージョンを受け取るか、代わりにJavaScriptがpushStateなどを呼び出すことを許可します。
  2. 直接リクエストを行わない場合、AJAXコンテンツがロードされるのを待ちますか?
  3. googlebotはpushStateを実装しているため、検索結果に適切なURLが表示されますか?
5
Brigand

Googlebotは一部のJavaScriptを理解して解析しますが、グラフィカルWebブラウザーのようには動作しません。 URL(例:ホームページ)にリクエストを送信し、サーバーはHTMLを送り返します。

サイトから実際のHTMLが返されない場合(たとえば、スクリプトタグ以上)、Googleまたは他の検索エンジンがページをクロールする際に問題が発生している可能性があります。

ただし、 このビデオ によると、GooglebotdoesはpushStateを理解します。したがって、ページに対して個別のリクエストを行うのではなく、AJAXメソッドを使用するようです。つまり、wouldは検索結果に正しいURLを表示します。

それを忘れてはいけないということではありません-別のリクエストを行うと、常に適切なページが返されるはずです。 1つには、Googleは「ページ」を理解しているため、ページをクロールした後、最初にpushStateを使用した場合でも、常にホームページから常に「移動」するのではなく、将来、ほぼ確実に個別のページを要求するようになります。

また、スクリプトを受信して​​解析し、JavaScriptを使用してHTMLを取得するよりも、ユーザーがHTMLを受信する方が高速です。また、pushStateやJavaScriptをまったく処理できない他の検索エンジンやブラウザがあることを忘れないでください。

4
DisgruntledGoat

Googleのマットカッツ ビデオで質問に答えた

通常、pushstateを使用する正しく実装されたサイトでは、クロールできるようにするための特別なサポートは必要ありません。

これは、Googlebotが、それらをインターセプトするJavaScriptの有無にかかわらず、ページ内のリンクを常に追跡するためです。そのため、事前にレンダリングされたページのバージョンを取得し、ユーザーをそれらのURLに誘導します。

Googlebotmayは、JavaScriptの一部を解析し、そこで見つかったURLを取得しようとします。したがって、プッシュ状態として提供するページフラグメントの一部をGooglebotが取得することもあります。

4