livedoor blog から WordPress サイトへの移行 : dogmap.jp
こちらを参考にやってみました。
記事と画像のエクスポート
今までlivedoorブログを使っていたのですが、そもそもlivedoor経由でアクセスされるケースなんて全然ないし、WYSIWYGエディタがいまいち使いにくいしでやっぱり自前で用意した方が良いんじゃないかと思い至りました。
ただlivedoorブログはユーザを囲い込みをしようと記事のエクスポートは有料のPRO版にしないと出来ないのでここはまあ仕方なくお金を払ってMT形式でエクスポート→WordPressにインポート。
しかし画像はエクスポートしてくれないクソ仕様気が利かない仕様なので
- 画像を巡集という巡回ソフトで画像を全部DL
- 新サイト側にディレクトリ構造を保ったままアップロード(私の場合wp-content/uploads/imgs)
- 全エントリの画像URLを「search-regex」というプラグインで置換しました。
移転元の記事から移転先の記事へのリンク
こういった誘導もしておかないと廃れていくので…
おおまかな流れとしては、
- 旧サイトから新サイトへ日付とエントリIDをGETで渡すリンクを貼る
- 新サイトのindex.phpで渡されたクエリを解析して適切なページへリダイレクトする
という風にします。
具体的には、まず旧サイト側のテンプレート編集で、
- トップページには「http://www.pirocot.com/」というリンクを追加。
- 個別記事ページには「http://www.pirocot.com/?date=<$ArticleDate$>&articleid=<$ArticleId$>」というリンクを追加。
これは例えば「http://www.pirocot.com/?date=2011年12月26日&articleid=51852462」 と新サイトへ記事の日付とエントリIDを送るリンクになります。 - カテゴリと月別アーカイブは妥協して「http://www.pirocot.com/」へのリンクを追加。
- 新サイト側のテーマエディタでindex.phpに上記のクエリを解析してリダイレクトするコードを追加
<?php if (array_key_exists('date',$_GET)) { $date = strtolower(mb_convert_encoding($_GET['date'],'UTF-8','EUC-JP,SJIS,eucjp-win,sjis-win')); if (array_key_exists("articleid",$_GET)) { $articleid = $_GET['articleid']; } else { $articleid = ''; } $date = preg_replace('/([0-9]{2,4})年([0-9]{1,2})月([0-9]{1,2})日/i', '/$1/$2/', $date); if (function_exists('http_redirect')) { http_redirect($date.$articleid.'.html'); } else { header('Location: '.$date.$articleid.'.html'); } exit; } ?>
これで無事リダイレクトされます。
あとは旧サイト側でmetaタグによるリダイレクトを追加すれば自動ジャンプするようにして完了。
一癖あったものの、機械的に移行出来て良かったです。