Hatena::ブログ(Diary)

ShobonEngineの日記 このページをアンテナに追加 RSSフィード Twitter

2011-03-23

Ajax ページを Google 検索エンジンに知らせる方法

Google検索エンジンクローラ)は、Ajax ページのコンテンツを動的に取得できないため、開発者が別途、検索エンジン用のページを作ってやる必要があります。


Ajax ページはしばしば、ハッシュ値 # で一意な URI を提供してきました。

Google 検索エンジンは、#! で指定された URIAjax ページと判断します。

そして、#!?_escaped_fragment_= に置換してアクセスして来ます。

したがって、#!URI は人間向けのページ、?_escaped_fragment_=URI検索エンジン向けのページとしてコンテンツを用意してやればいいことになります(従来の # は廃止する)。

検索エンジン向けのページは、JavaScript を無効にしてもコンテンツを閲覧できるよう、サーバ側であらかじめ手配してやる必要があります。

f:id:shobonengine:20110323051506j:image


トップページ等、#! を使わず検索エンジンAjax ページであることを知らせたい場合、<head> タグ内に <meta name="fragment" content="!"> を配置します。

このメタタグを見つけた検索エンジンは、URI?_escaped_fragment_=クエリを追加してアクセスして来ます。

f:id:shobonengine:20110323060505j:image


サーバ側では、クエリ ?_escaped_fragment_= の有無を手がかりに、人間がアクセスしたのか検索エンジンがアクセスしたのかを判別します。

以下、Google App Engine (Python) での例。

query_string = self.request.query_string
escaped_fragment = self.request.get('_escaped_fragment_')
# for crawler
if query_string == '_escaped_fragment_=':
    # メタタグから検索エンジンがアクセスしてきた場合
    
elif escaped_fragment:
    # ハッシュフラグメントから検索エンジンがアクセスしてきた場合
    

参考:このページは見つかりません。 - Search Console ヘルプ

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/shobonengine/20110323/1300829011