TwitterやFacebookのURLには、なぜ#!が含まれるのか (SEOとAjaxのおいしい関係)

  • Ajaxを使うためにはページ内リンク (hash fragment=URLの#以降) を使うのが一般的*1
  • hash fragmentはサーバに送信されないから、JavaScript非対応のブラウザだと動作しない

そこで Google は、#! が含まれる URL を hash を含まないものに読み替える仕組みを提唱している。例えば「www.example.com/ajax.html#!key=value」のサーチエンジン用URLは「www.example.com/ajax.html?_escaped_fragment_=key=value」になる。

TwitterFacebookはこの仕様に従うことで、Ajax な UI と SEO を同時に実現している、というわけ。ということを調べたなう。

参照: Getting Started  |  AJAX Crawling (Deprecated)  |  Google Developers

*1:そうしない限り、操作時にページ切り替えをしないという目的と、表示画面ごとにパーマリンクを提供するという目的の両立ができない

*2:リンクがコピペされたりすることを考えると User-Agent を見て送出するリンクを変えたり、href と onclick 属性の両方を指定する方法では限界がある