ご存知かもしれませんが、Googleは現在AJAXをクロールしています。実装ははるかにエレガントなものですが、少なくともYahooとBingAFAIKにも適用されます。
コンテキスト:私のサイトはWordpressとHTML5によって運営されています。カスタム投稿タイプにはツリータイプのコンテンツがあり、これらのコンテンツはAJAXによって駆動されます。ハッシュバン(#!)を実装する方法を完全に理解するまで、ハッシュバン(#!)を使用しないために私が得た解決策は、かなり「リスク」です。* site.com/article-one/?tab=first_tab *にリンクするHREFとしてのすべてのリンク。これは、選択したタブのコンテンツのみを表示します(<div>Content...</div>
)。このような:
<a href="http://site.com/article-one/?tab=first_tab" data-tab="first_tab">This First Tab</a>
お気づきかもしれませんが、data-tabはJavaScriptがAJAX Getで送信する値であり、関連するコンテンツを取得してコンテナー内にレンダリングします。反対側では、サーバーは変数を取得し<?php get_template_part('tab-first-tab'); ?>
、コンテンツを配信するためにを実行します。
リスクについては、Googleや他の検索エンジンがhttp://site.com/article-one/ではなく* http://site.com/article-one/?tab =first_tab*を取得することがわかります。タブコンテンツが自動的に選択されたホームページを表示する代わりに、ユーザーがそのURLにアクセスできるようにします。
ここでの問題は、それを回避するための実装です。
Hashbang:私が学んだことから、私はこれをすべきです。
- HREFは
site.com/article-one/#!first-tab
- JSは、hrefの「first-tab」を抽出して$ _GETに渡す必要があります(「data-tab」を使用しないため)。
- JSはURLを次のように変更する必要があります
site.com/article-one/#!first-tab
- JSは、URLにが含まれているかどうかを検出
#!first-tab
し、デフォルトのタブの代わりに選択されたタブを表示する必要があります。
さて、サーバー側の実装については、ここで私は森の中でちょっと迷っています。
- Wordpressはどのように処理し
site.com/article-one/?_escaped_fragment_=first-tab
ますか? - .htaccessで何かを変更する必要がありますか?
- HTMLスナップショットは何が必要ですか?私の推測ではすべてのサイトですが、コンテンツだけを表示するのではなく、要求されたタブが表示されています。
Wordpressが_escaped_fragment_を検出したときに処理するものを分離できると思います。Googleのようにリクエストされた場合は、すべてのコンテンツと選択したコンテンツが表示されます。そうでない場合は、AJAXがリクエストしているため、コンテンツのみが表示されます。それは正しいはずですか?