28

新しい Web サイトを開発していて、できるだけ AJAX を利用したいと考えています。基本的に、ユーザーがホームページから離れることはほとんどなく、すべてがポップアップ ウィンドウ、スライダー、セクションなどに表示されるようにしたいと考えています。

現在、私たちの既存のウェブサイトはすでにかなり上位にランクされているので、Google の満足度も維持したいと考えています。Making AJAX Applications Crawlable by Google を読んでいて、_escaped_fragment_を介してクローラーに同じコンテンツを提供する必要があることを理解しています。

SEO フレンドリーな URL を既に提供しているUmbraco
を 使用して、この Web サイトを開発したい問題。すなわち

しかし、問題は、Umbraco コアをハッキングせずに_escaped_fragment_を実装する簡単な方法がないことです(少なくともそれは私の知識です)。以下に投稿したソリューション (回答) を使用すると、Javascript を使用しないユーザーも満足できます。Win-Winの状況?教えてください!=)

更新
昨日、別のユーザーからの回答があり (現在は削除されています)、Google はもはや_escaped_fragment_メソッドを使用しないことを提案し、これを除外することを提案しました。これは本当ですか?Google は実際に AJAX を実行してコンテンツを表示しますか?

ありがとう
マルコ

4

3 に答える 3

11

@Daniel Pryden のコメントからアドバイスを受けて、代わりにこれを回答として投稿しています。

私はこの問題と考えについて考えました - 昔ながらの方法で実際のページとすべてを作成してから、次の手順を実行してください。

  1. jQuery を使用してホームページ上のすべての内部リンクをインターセプトし、 の前にハッシュ (#)window.location.pathnameを追加して、hashchange イベントをトリガーします。(手順 3 を参照)
  2. ホームページ以外のすべてのページに JavaScript リダイレクトを追加して、ページをホームページにリダイレクトしますがwindow.location.pathname、ハッシュ (#) の後に を追加します。たとえば、Google はhttp://www.domain.com/about-us.aspxをクロールしますが、ユーザーがそのページにアクセスすると、 http://www.domain.com/#/about-us.aspxにリダイレクトされます。
  3. ホームページでは、jQuery BBQ または同様のプラグインを使用して、動的コンテンツをロードできるように、ページのロード時を含め、hashchange イベントをリッスンします。Umbraco は、リクエストが AJAX かどうかに基づいて、部分的または完全なページ コンテンツを提供するように構成できます。

このようにして、Javascript を使用しないユーザーは本格的な (やや見栄えの良い) Web サイトを持ち、Google は問題なくすべてのページをクロールしますが、Javascript を使用するユーザーは常にホームページにとどまります。 Web サイトではなく Web アプリが完成します。

于 2011-07-20T03:49:12.977 に答える
9

HTML5 履歴セッション管理の使用も検討しましたか?

このようにして、新しいブラウザーでハッシュを使用する必要がなくなり、ユーザーは何も気付かなくなります。

少し単純化すると、次のようになります。

編集:更新された例。

function route(path) {
    $.get(path, function(data) {
        //parse data
    });
}

if (typeof history.pushState !== 'undefined') 
{
    $(window).bind('popstate', function(e)
    {
        route(window.location.pathname);
    });
    $('a').click(function(event) {
        event.preventDefault();
        history.pushState({},'',this.href);
    });
} else {
    $(window).bind('hashchange', function(e)
    {
        route(window.location.hash);
    });
    $('a').click(function(event) {
        event.preventDefault();
        $(this).attr('href', '/#'+$(this).attr('href'));
    });
}
于 2011-07-24T13:50:16.967 に答える
0

jQuery BBQ を使用し、ページの上部で js 関数を使用して、有効なハッシュがあるかどうかを確認します。有効なハッシュがある場合は、そのページにリダイレクトします。

于 2011-07-26T21:25:54.377 に答える