要約:はてなブックマークがサイトの移転レスポンス(HTTP301レスポンス)に対応してブックマークデータを移動するようにしてほしいのですが、そのために、はてな側にどういう対応を取ってほしいのか考えてみます
URI構造変更のお知らせを書いてからだいぶ経ってしまいましたが、続きです。サイト移転をはてブ側に対応してもらえればいいわけですが、そのためにどうすればよいのかちょっと考えます。
はてなアイデアでは
まずはてなアイデアでは、これに関して次の3つが要望として出ているようです。
- はてなアイデア – 登録日時やコメントなどの情報を保ったまま、ブックマークしたURLを変更したい。(ページ移転時など)
- はてなアイデア – 被ブックマークされたURLが移転した時に、新しいURLに自動で変更する機能、または変更申し込み用フォーム。(301リダイレクトやポイント送信用のFOAF情報で移転を判断)
- はてなアイデア – 301 Permanent redirectに対応し、URLを自動変更する。あるいは何らかのトリガーで301を検知し、URLを更新可能にする。
2番目のアイデアではid:noyaさんはブックマークされた全エントリーを定期的に観測するのは実装コスト上高くなりすぎるので現時点では難しいです。URL 編集は、URL は全ユーザーで共通で悪意のある操作をされた場合に非常にクリティカルなので、これも難しいかもしれません。
と言ってまして、まぁこれは確かにその通りです。
かといって、BlogPeopleのように寄せられたサイト移転申請の判断・確認を人手でするのは(ユーザが技術的作業をしないのでユーザには優しいですが)、運営側の人的コストがかかりすぎます。ということでユーザ側がフォームなどから変更するのではなく、サーバ側で移転を検知する方がよさそうです。
どうやって移転を検知するか
定期的に観測するのは確かにコストが高いので、idea:13918のように何らかのトリガーで301を検知し、URLを更新可能にするのが現実的でしょう。で、何がトリガーになりうるかを少し考えてみると以下のような物が挙げられます。
- (1) ブックマークページを登録しようとした際にページのサーバ側でステータスコードをチェックする
- 登録処理はリクエスト数が多く、その度にチェック作業を入れていては、レスポンスが低下しかねない。また、対象のURLが多い場合はユーザ側の負担が多すぎる。よってこれは却下。
- (2) はてな側にサイトマップファイルを送信して(もしくはトップページに配置してフォームから告知→クロール)ファイルに書かれているURLのステータスコードをチェックする
- サイトマップファイルとは、サイトマッププロトコル準拠のXMLです。作成にはGoogle謹製の自動作成ツールやサードパーティの製品があるので、ユーザコスト的にも技術的にもそれほど難しくないだろうと思います。しかし、既に移転が終わってURLが変わってしまった場合は旧URLの一覧を出すのは難しいケースもあるのが、難点ですね。
- (3) はてな側に対象となるサイトのトップページURLを送信し、そのサイト以下の全てのブックマーク済URLのステータスコードをチェックする
- ユーザのコストは低いですし、ブックマークされていないURLまでクロールしなくて良いので効率性は良さそうですが、悪意あるユーザーに例えば http://d.hatena.ne.jp みたいな直下のブックマーク記事が極端に多いURLを指定されると、クローラがムダに汗をかく羽目になります。この場合は http://d.hatena.ne.jp/ID/ まで設定するようフィルタを設定する事になるのでしょうが、それはそれでURL設定の手間がかかりそうです。
ということで、(2)の方法がベターかなと思います。
ただ、この場合においても移転先が本当に移転URLなのかどうかはわかりませんので、必要に応じて、例えば指定されたHTMLファイルを置くなどして本人認証するという手もあります。が、そもそも移転先URLを偽装して得られるメリットはほとんど無いと思われるので問題はないでしょう。
レンタル型ブログサービスをどうするか
しかし、.htaccessがそもそも置けない、つまりHTTPヘッダをいじれない環境下にあるレンタル型ブログサービス(例えばはてなダイアリー)は移転告知が出来ないので、こうした措置があっても受けることが出来ません。
これは機械的に対処が出来ないと言うことですからセキュリティと天秤にかけて対処できないという手もあるかとは思います。
が、あえて対処策を考えるなら例えば旧サイトに移転先URLを記したmetaタグを配置してもらい、新サイトURLにも指定したmetaタグを配置してもらう等といった方法でしょうか。
もちろん、移転元・移転先が同内容でなければならないので、本文の一致率なども求めるなどの照合作業もしなければならず、なかなか一筋縄ではいきそうにない感じです。
移転先のURLが既にブックマークされていたらどうするか
移転元・移転先、いずれかだけブックマークされている状況ならブックマークがある方に統一すればいいわけで、それほど問題はないかと思います。が、移転元のURLと移転先のURLが既に同ユーザによってブックマークされていた場合は少し考える必要があると思います。
私は、新サイト側でつけられているブックマークの方がより最新のページ内容を1 ブックマークしていることが多いと思われるので、新サイト側のブックマークを優先する(同ユーザの旧サイト側ブックマークは破棄する)のが良いかと思います。
まとめ
案外きちんと考えて直してみると、セキュリティ対策などなかなか難しいなと思わされます。ブックマークデータの移動という一歩間違えばサービスにかなりのダメージが来ることなので、はてなの中の人が動いてくれるのを期待するのはちょっと難しいかなとも思います。
さて、一応それはおいといてここで対応策をまとめておきます。まずユーザ側にサイトマップファイルを送信してもらい、はてな側がその一覧(のうち、ブックマークが付いているURL)をクロール。HTTPレスポンス301 Moved Permanentlyを受け取ったら、移転先のURLにブックマークデータを移動します。
もし、移転元・移転先のURLに同ユーザがブックマークをつけていた場合は、移転先URLのブックマークを優先しつつ、マージします。
- 移転先だけ更新が進んでいるケースなど[戻る]
Popularity: 2% [?]
- キーワード:




読者のコメント
0件