« [Debug Hacks] #66.手元のx86マシンが64bitモード対応かどうかを調べる | メイン | Perl で学ぶ x86 アセンブラ入門 (Shibuya.pm#11発表資料) »

2009年6月 5日 (金)

ブログのお引っ越し(MovableType3→TypePad)

先週から今週にかけてブログの移転作業を行いました。

■ 1. 経緯

今までのサイボウズ・ラボのブログは、自社サーバ上でMovableType3を長らく運用してきたのですが、 大量のトラックバック・コメントSPAMへの対応負荷も無視できなくなり、 MovableType4にバージョンアップするのも面倒なので(既にバージョンアップライセンスの販売は終了していて、MT4に移行するにしても新規にライセンスを購入しなおさないといけないため)、 この際、サイボウズ・ラボとサイボウズ本社の技術者のブログをまとめて TypePad に移行することにしました。

■ 2. RSS/Atomフィードのリダイレクト

livedoor Readerでは巡回対象のフィードを取得する際にHTTPリダイレクトの処理を行っています。
  • 代表的なものとして「301リダイレクト(恒久的な移転)」と「302リダイレクト(一時的な移転)」をサポートしています。
    • 301 Moved Permanentlyによるリダイレクトの場合、巡回対象のURLが置き換わります。
    • 302 Moved Temporarily(または302 Found)は巡回対象のURLはそのままで、リダイレクト先のURLを取得します。

    • 301以外の3xxレスポンスによるリダイレクトの場合は、巡回対象のURLの書き換えは起こりません。
.htaccess等を使ったリダイレクトの設定が可能な場合は、livedoor Readerの購読者を移転先のブログに引き継ぐことができます。
ということでしたので、旧サーバのApache上で 301 のリダイレクト設定を行いました。
RewriteEngine On
RewriteRule ^/blog/takesako/index.xml http://developer.cybozu.co.jp/takesako/rss.xml [R=301,L]
RewriteRule ^/blog/takesako/atom.xml http://developer.cybozu.co.jp/takesako/atom.xml [R=301,L]

とりあえず、LDRではそのまま購読者を引き継ぐことが出来ました。 その他のRSSリーダの動作は確認しきれていませんが、とりあえずこのような対処で移行してみました。 (もしもお使いのソフトウェアで不都合がある場合はご連絡いただけると有難いです)

■ 3. はてなブックマークの引継ぎ

過去記事についたはてなブックマークの関連付けを残しておきたい、という要望に応えるために MovableTypeからエクスポートするときに 以下のHTMLをBODYの先頭に追加して対応してみました。

BODY: 
<div align="right"><a href="http://b.hatena.ne.jp/entry/<$MTEntryPermalink$>"><img
src="http://b.hatena.ne.jp/entry/image/<$MTEntryPermalink$>" border="0" alt="[B!]"></a></div>
<$MTEntryBody$>

■ 4. permalinkの移行

Movable Type 4 では、インポート時の BASENAME に対応しているみたいなのですが、 困ったことに、TypePad では対応していないようでした。

TypePadでデータをインポートすると、「BASENAME」の項目が無視されるため(対応していないため)、 permalinkが日本語を含んだTITLEから自動で再生成されてしまいます。

(例)エントリーのタイトル:「TypePadでBASENAMEの項目がインポート時に無視される」

 旧URL:http://labs.cybozu.co.jp/blog/takesako/20xx/xx/old_filename.html
   ↓そのままインポートするとHTMLのファイル名が変わってしまう問題が・・・
 新URL:http://developer.cybozu.co.jp/takesako/20xx/xx/typepad_basename.html

これだと、

RewriteRule ^/blog/takesako/(.*)\.html$ http://developer.cybozu.co.jp/takesako/$1.html [R=301,L] 

のような単純なリダイレクト設定では記事の転送ができなくなってしまうので、 困ってしまうことになります。

■ 5. Movable Type 3 からのエクスポート

この BASENAME の件ですが、TITLE フィールドに <$MTEntryBasename$> を指定して MTからエクスポート → TypePad にインポートするとファイル名が保持されることがわかったので、 今まで使用していなかった KEYWORDS: フィールドに <$MTEntryTitle$> を退避して、 インポート後に手作業でブログのタイトルをカット&ペーストして元に戻して対応することにしました。

Movable Type 4 以前のバージョンからのブログ記事インポートからの変更点は以下の通りです。

<MTEntries lastn="99999">AUTHOR: <$MTEntryAuthor$>
TITLE: <$MTEntryTitle$> <$MTEntryBasename$>
BASENAME: <$MTEntryBasename$>
STATUS: <$MTEntryStatus$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$>
PRIMARY CATEGORY: <$MTEntryCategory$>
<MTEntryAdditionalCategories>CATEGORY: <$MTCategoryLabel$>
</MTEntryAdditionalCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
TAGS: <MTEntryTags glue=",">"<$MTTagName quote="1"$>"</MTEntryTags>
-----
BODY:
<$MTEntryBody$>
-----
EXTENDED BODY:
<$MTEntryMore$>
-----
EXCERPT:
<$MTEntryExcerpt$>
-----
KEYWORDS:
<$MTEntryKeywords$> <$MTEntryTitle$>
-----
<MTIfNonZero tag="MTEntryCommentCount"><MTComments>COMMENT:
AUTHOR: <$MTCommentAuthor default=""$>
EMAIL: <$MTCommenterEmail$>
URL: <$MTCommentURL$>
IP: <$MTCommentIP$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0"$>
-----
</MTComments></MTIfNonZero><MTIfNonZero tag="MTEntryTrackbackCount"><MTPings>PING:
TITLE: <$MTPingTitle$>
URL: <$MTPingURL$>
IP: <$MTPingIP$>
BLOG NAME: <$MTPingBlogName$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt$>
-----
</MTPings></MTIfNonZero>
--------
</MTEntries>

こうして、昔の記事のファイル名を維持しながら TypePad に移行することができました。

私の場合はエントリー数が少なかったので手作業でも何とかなりましたが、 エントリー数が多いブログだとこの方法はお勧めできませんね。。。

■ 6. まとめ

ということで、無事TypePadに移行できましたので、引き続きこちらでもブログ記事を書いていこうと思います。よろしくお願いいたします。

■ 7. 追記(2009/06/10)

一部の旧URL http://labs.cybozu.co.jp/blog/takesako/2008/12/caravan_takamatsu.html からのリダイレクト、 正しいとび先は http://developer.cybozu.co.jp/takesako/2008/12/caravan_takamat.html に失敗していました。

これはTypePad上で扱えるブログ記事のファイル名の長さに制限があるのが原因みたいで、リダイレクトURL生成時に上限の15文字以内に切り詰めるようにリダイレクトルールを見直し設定変更しました。

RewriteRule ^/blog/takesako/(.*)\.html$ http://developer.cybozu.co.jp/takesako/$1.html [R=301,L] 
  ↓16byte以上のときは15byteに切り詰める
RewriteRule ^/blog/takesako/(..../../.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?).*\.html$ http://developer.cybozu.co.jp/takesako/$1.html [R=301,L]
RewriteRule ^/blog/takesako/(.*)\.html$ http://developer.cybozu.co.jp/takesako/$1.html [R=301,L]

hasegawaさん、ご指摘どうもありがとうございました。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/404050/20059723

このページへのトラックバック一覧 ブログのお引っ越し(MovableType3→TypePad):

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。