ブログのお引っ越し(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の購読者を移転先のブログに引き継ぐことができます。
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"$>PRIMARYCATEGORY: <$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]
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さん、ご指摘どうもありがとうございました。
コメント