まず、”#!”の呼び方から。

「シャープエクスクラメーション」とか呼ぶのかと思ってたら、
「hash=#」「bang=!」の略で、「shebang=シバン」っつーらしいんです。

シバンがURLに付いてるサイトで、最も有名どころで言うと、Twitter。
Gmailなんかもそうですかね。

https://twitter.com/#!/i/connect 然り、https://twitter.com/#!/i/discover も然り。

lifehackerやfacebookも、今は違うけど昔はどうやら付いていたらしい。

”#”と”!”をわけて考えると、
・”#”は、Ajaxアプリケーションとして、画面遷移ではなくページ内遷移をするため。
・”!”は、”#”とセットにして、Googleクローラーにクロール可能なAjaxアプリと認識させるため。(※注1)

Ajaxアプリケーションなので、

・Javascriptによりクライアント(ブラウザ)上での動作が主で、サーバー負荷が軽減される
・特にサーバー側の機能を必要としない
・Javascriptで画面を書き換えるので動作が速い

といった、良いことはあるけれど、

・GoogleBot以外のクローラーが、クローリングできない。(※注1)
・ページ自体がコンテンツ扱いでないため、アクセス解析がし難くなる。
・サーバーサイドプログラムと比較すると、ブラウザ間で挙動の差異が出てしまう確率が高くなる

といった、良くないこともある。

(※注1)
また、SEO的には、”#!”を付ければGoogleBotが勝手にクローリングしてくれる訳ではありません。

GoogleBotは、”#!”形式のURLを見つけると、まず、
URLを”_escaped_fragment_”に変換した上で、サーバーにコンテンツをリクエスト。

たとえば、
ohsexybaby.com/#!web/843/ だったら、
ohsexybaby.com?_escaped_fragment_=web/843/ って感じでリクエストがきます。

そしたら、サーバーサイドでは、クローラーからのアクセスと判別し、該当コンテンツのHTMLスナップショットを作成して、クローラーに返すように実装する必要があります。

HTMLを受け取ったクローラーは、HTMLを解析し、もとのURL(ohsexybaby.com/#!web/843/)に戻したうえで、インデックスを格納してくれる、という仕組み。

Googleとしては、「Googlebot がよりブラウザに近い動作をするよう対応を続けています。」と仰ってるけど、クローラーがJavascriptをぴょんぴょん実行するのはまだ先なんでしょーか。

Related posts:

  1. 今twitterでフォローしておきたいアカウント
  2. WordPress Twitter連携 プラグインなど
  3. Firefoxのメモリを最適化して、サクサク快適に!!
  4. プロ野球ファン必見!!試合速報Androidアプリ
  5. 秒単位でアクセス状況が解る!Googleアナリティクスのリアルタイムレポート