2007年05月02日 21:45 [Edit]

URI - 動的コンテンツのpermalink

返事が来たので、本題。

はてなブックマーク - ブックマークたつを / 2007年05月02日
それぞれのURL(パラメタ付きURL)が意味を持っているサイトなのでまとめちゃうとダメなのです…。例えばWikipediaにボット来て重いからといってトップに飛ばしたら個別記事が検索されなくなりますよね。 by 元記事主

動的コンテンツのpermalinkはどうあるべきか。


以下は、全て同一の内容である。

しかも、Wikipediaの各ページには、「この版への固定リンク」、英語版では"Permanent Link"が明記されていて、それは必ず以下のようになっている。

にも関わらず、検索エンジンに引っかかるのは、Wikipediaが「ここがPermalinkです」と明言しているhttp://lang.wikipedia.org/w/index.php?title=title&oldid=oldidではなく、最初の http://lang.wikipedia.org/wiki/title の方である。しかも、titleencodeURIComponent()されていても、検索エンジンにはja.wikipedia.org/wiki/小飼弾decodeURIComponent()されて表示される。ちなみに調べてみればわかるが、「Amazonの二枚舌」と異なり、WikipediaではUser Agent別のredirectはしていない(ただしLWPには403 Forbiddenを返している)。

これに関しては、Wikipediaの「主張」より、検索エンジンの「主張」の方に軍配が上がるのではないか。

動的コンテンツといえど、permalinkはquery stringなしにした方がよいと思う。まずキャッシュとの相性がよい。Squidをはじめ、たいていのキャッシュの実装では、デフォルトの設定で?を含むURIをキャッシュの除外対象にしている。次に実装する側にとっても、何をしたらよいかが明白だ。そしてなにより、検索エンジンの検索結果に見られるように、見た目もよい。

このあたりは、以下がよくまとまっている。

第20回 “使いやすいURI(URL)”の設計を考える:ITpro
  1. 短いURIにする
  2. 入力しやすいURIにする
  3. 大文字小文字を区別しない
  4. 人間が読んで理解できるURIにする
  5. サイトの構造をきちんと表したURIにする
  6. ユーザー中心の設計をする
  7. 改造しやすいURIにする
  8. マジックナンバーを使わない
  9. クエリー文字列を使わない
  10. 拡張子はコンテンツのデータ形式を表すようにする
  11. 最後のスラッシュのあるなしでページを変えない

細部にまで同意するのは技術的にも難しいが(例えば大文字小文字は、日本語には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が活用している。

確かに

  1. http://www.example.com/dynamic.cgi?keyword=foobar&format=baz
  2. http://www.example.com/dynamic/foobar.baz

と並べて書くと、誰が見ても--そう、検索エンジンが見ても -- b.の方が心地よい。今後の動的コンテント生成は、a.を受け入れつつ、なるべくb.に移行するというのがよいのではないか。

Dan the Man with Too Many Links to Resolve


この記事へのトラックバックURL

この記事へのトラックバック
アクセス解析をしていると、Googleのクローラー(Googlebot)が大量に来ていることがわかる。 全アクセスの約50%がGoogleのクローラーで、約10%がYahooのクローラーという状況。 Googlebot がたくさんくる CEEK.JP NEWS に Googlebot が大量に着てます。どれくらい着ているか...
Googlebotが大量に来て高負荷になるってほんとか?【Shoulder.jp】at 2010年12月16日 13:49
今までなかったのがむしろ不思議としかいいようがないぐらい。大歓迎。 検索エンジン3社、正しいサイトURLを認識させるcanonical属性を導入(URLの正規化) :: SEM Rそこで検索大手3社は今回、canonical属性を導入。ここに正しいURLを記述することで、クローラはその情報を....
tips - livedoor Blog - canonical属性に対応する【404 Blog Not Found】at 2009年02月14日 19:06
アクセス解析をしていると、Googleのクローラー(Googlebot)が大量に来ていることがわかる。 全アクセスの約50%がGoogleのクローラーで、約10%がYahooのクローラーという状況。 Googlebot がたくさんくる CEEK.JP NEWS に Googlebot が大量に着てます。どれくらい着ているか...
Googlebotが大量に来て高負荷になるってほんとか?【Shoulder.jp】at 2008年02月10日 07:00
ここら辺に呼応して。 404 Blog Not Found:URI - 動的コン...
503を返すとか返さないとか言う前に。【Junnama Online (Mirror)】at 2007年05月03日 01:34
この記事へのコメント
Wikipediaのリンクについて。oldid=***が付いているURLは「この【版】への固定リンク」とあるように、その時点での編集内容を保存したページのURLです。つまりoldid=***はその記事の「第n版」を指すqueryなのです。
例えば、以下のリンクはWikipedia「小飼弾」の記事の初版へのParmalinkです。
http://ja.wikipedia.org/w/index.php?title=%E5%B0%8F%E9%A3%BC%E5%BC%BE&oldid=5173038
Posted by Yuichirou at 2007年05月03日 00:28