パーマリンクのリダイレクト

ブログをMovable TypeからWordPressに移行する際、記事やコメントに関してはWordPress側でコンバートツールが実装されてるので特に問題は無いのですが、URIが変わってしまうという点が一番ネックになると思います。
KAYも最初は、引っ越しメッセージ付きのRSSだけ用意しといて後は諦めるか、と思ってたんですが、記事数もそんなに多くないし(ちょうど100件だった)、せっかくだから全記事リダイレクトしたれと思ってこんなスクリプトを書いてみました。
<?php
require_once("MDB2.php");
$db =& MDB2::factory("mysql://user:pass@host/dbname");
$sql = <<<SQL
select
date_format(mt_entry.entry_created_on, '%Y/%m/'),
mt_entry.entry_basename,
date_format(mt_entry.entry_created_on, '%Y/%m/%d/'),
wp_posts.id
from wp_posts
left join mt_entry on mt_entry.entry_title = wp_posts.post_title
SQL;
$result =& $db->query($sql);
while($row = $result->fetchRow()) {
echo "Redirect /blog/" . $row[0] . $row[1] . ".html http://blog.chisyamori.com/kay/" . $row[2] . $row[3] . "/\\n";
}
$db->disconnect();
?>
ちなみに、MT、WPの両方でMySQLを使っているという前提です。MDB2::factory()の引数はお使いのデータベースに合わせて適宜変更して下さい。
まず、ムーバブルタイプのmt_entryテーブルをワードプレスのテーブルが入っているDBにあらかじめインポートしておきます。
で、上記のスクリプトを適当なファイル名で保存して、PHPとして実行してやる。
シェル上でならこんな感じ。
$ php htaccess.php > .htaccess
まあ、普通にWEB上からアクセスして出力されたページをコピペして保存してもいいんですけど。
joinする時に記事タイトルで結合させるのがミソですね。
後は、MT側とWP側の書式に合ったパーマリンクを整形して出力してやれば、お手軽リダイレクト用.htaccessの出来上がり。



