返事が来たので、本題。
はてなブックマーク - ブックマークたつを / 2007年05月02日それぞれのURL(パラメタ付きURL)が意味を持っているサイトなのでまとめちゃうとダメなのです…。例えばWikipediaにボット来て重いからといってトップに飛ばしたら個別記事が検索されなくなりますよね。 by 元記事主
動的コンテンツのpermalinkはどうあるべきか。
以下は、全て同一の内容である。
- http://ja.wikipedia.org/wiki/%E5%B0%8F%E9%A3%BC%E5%BC%BE
- http://ja.wikipedia.org/w/index.php?title=%E5%B0%8F%E9%A3%BC%E5%BC%BE
- http://ja.wikipedia.org/w/index.php?oldid=12149277
しかも、Wikipediaの各ページには、「この版への固定リンク」、英語版では"Permanent Link"が明記されていて、それは必ず以下のようになっている。
にも関わらず、検索エンジンに引っかかるのは、Wikipediaが「ここがPermalinkです」と明言しているhttp://lang.wikipedia.org/w/index.php?title=title&oldid=oldid
ではなく、最初の http://lang.wikipedia.org/wiki/title
の方である。しかも、title
がencodeURIComponent()
されていても、検索エンジンにはja.wikipedia.org/wiki/小飼弾
とdecodeURIComponent()
されて表示される。ちなみに調べてみればわかるが、「Amazonの二枚舌」と異なり、WikipediaではUser Agent別のredirectはしていない(ただしLWPには403 Forbidden
を返している)。
これに関しては、Wikipediaの「主張」より、検索エンジンの「主張」の方に軍配が上がるのではないか。
動的コンテンツといえど、permalinkはquery stringなしにした方がよいと思う。まずキャッシュとの相性がよい。Squidをはじめ、たいていのキャッシュの実装では、デフォルトの設定で?
を含むURIをキャッシュの除外対象にしている。次に実装する側にとっても、何をしたらよいかが明白だ。そしてなにより、検索エンジンの検索結果に見られるように、見た目もよい。
このあたりは、以下がよくまとまっている。
第20回 “使いやすいURI(URL)”の設計を考える:ITpro
- 短いURIにする
- 入力しやすいURIにする
- 大文字小文字を区別しない
- 人間が読んで理解できるURIにする
- サイトの構造をきちんと表したURIにする
- ユーザー中心の設計をする
- 改造しやすいURIにする
- マジックナンバーを使わない
- クエリー文字列を使わない
- 拡張子はコンテンツのデータ形式を表すようにする
- 最後のスラッシュのあるなしでページを変えない
細部にまで同意するのは技術的にも難しいが(例えば大文字小文字は、日本語にはN/A (Not Applicable))大意に同意できないというWebmasterはいないのではないか。もっとも、ITProの一つの記事を複数permalinkに割ってしまうのは紺屋の白袴チックではあるのだけど。
実装の面でも、これを行うのに困難な点はほとんどない。動的コンテントのbase URIが http://www.example.com/dynamic
だとして、特定のコンテントがhttp://www.example.com/dynamic/path/to/the/content
だとしたら、たいていのWeb Serverは環境変数PATH_INFO
に/path/to/the/content
をセットしてくれる。これを利用しない手はないと思う。
さらに、静的コンテントのように動的コンテントのフォーマットを拡張子で示すというのもなかなかいいアイディアだと思う。これはTwitter APIが活用している。
確かに
- http://www.example.com/dynamic.cgi?keyword=foobar&format=baz
- http://www.example.com/dynamic/foobar.baz
と並べて書くと、誰が見ても--そう、検索エンジンが見ても -- b.の方が心地よい。今後の動的コンテント生成は、a.を受け入れつつ、なるべくb.に移行するというのがよいのではないか。
Dan the Man with Too Many Links to Resolve
例えば、以下のリンクはWikipedia「小飼弾」の記事の初版へのParmalinkです。
http://ja.wikipedia.org/w/index.php?title=%E5%B0%8F%E9%A3%BC%E5%BC%BE&oldid=5173038