固定リンクを変えずにスムーズにMovableTypeからWordPressに移行するまでの作業ログ

wp_top.gif

さてそろそろWordPressに移行しますよ。MovableTypeにはお世話になりましたが、企業CMSとして高機能版へ進化していっているので個人ブログにはちょっとつらい(MT4.xへアップグレードする理由がない)。あとモバイルへの対応が難しいのも理由です(WordPressだとプラグイン使えば固定リンクそのままでケータイへ振り分け可能)。

なお、WordPressへの移行は以前も検討したのですが、固定リンクを保持するのが難しかった(と当時思っていた)ので躊躇していました。URLが連番で処理されていればいいのですが、記事タイトルからごにょごにょと生成される方式だったのでいろいろ面倒だったのです。

しかしいろいろ調べてみるとなんとか固定リンクを変えずに移行できることが判明。まずはSIMPLE*SIMPLEから移行させてみました。

s_s.gif

↑ まだ完璧ではないですが、記事単位のURLはそのまま保持しつつ移行完了。

URLを気にしない人ならいいですが、長くブログをやっていると過去の資産というかSEOというかが重要ですよね・・・。いやぁ、良かった、良かった。

以下、その作業ログ。淡々といきますよ。なお、MovableType 3.32からWordPress 2.7への移行です。たぶん他のバージョンでもOK。

■ 忙しい人のためのまとめ

かなり長文になりそうなので作業方針だけ最初に書いときます。

  1. 前準備としてMovableTypeのテンプレートを使って固定リンクに使われているファイル名をだーっと書き出し。
  2. WordPressをインストール。各種設定。
  3. 1.で用意したファイルを使い、WordPressのDBを直接いじってwp_posts.post_nameを一気にUpdate。
  4. 固定リンクを互換性のあるように設定。
  5. 画像ファイルをごっそりコピー。
  6. 画像ファイルおよびアーカイブにアクセスできるように.htaccessをごにょごにょ。

こんな感じですかね。要はMTのときのファイル名を使ってWPのDBを更新、それをURLに使う、という手法です。

■ かなり詳細な作業ステップ

さて以下、詳しくいっときましょう。

  • なにはともあれバックアップ
  • 基本。MTはいじらないのですが、変なことになったときに戻れるようにブログのディレクトリ以下をバックアップしておくといいでしょう。DB使っている人はそれも。

  • MTのテンプレートを使って固定URLリストを生成
  • MTのテンプレート機能を使えば固定URLのリストを生成できます。

    wp_template.gif

    ↑ こんな感じで。

    一応コードも。固定URLと一応何の記事がわかるようにタイトルも(これは使わないけど確認用に)。

    <MTEntries lastn="999999">
    <$MTEntryBasename$>|<$MTEntryTitle$>
    </MTEntries>
    

    そのあとこのテンプレートを再構築すれば http://www.simplexsimple.com/postnames.txt でリストが取得できます。あとで使うのでここでリストをコピー、テキストファイルとして保存しておきましょう。

    ただ、ここで一点注意。上記のコードだと公開されている記事だけが対象になります。下書きの記事、公開予定の記事がある人はあとで書き出しをするときに書き出したファイルから削除するか、全部公開しちゃってから作業をすすめましょう(そうしないといろいろずれる)。

  • MTで書き出し
  • ここでMTの機能を使って全エントリーを書き出しておきます。mt-export.txtとしておきましょう。

  • WordPressのインストール、設定
  • データベース設定して設定ファイルをいじってファイルをコピーしてパーミッションとか必要なら変えてください。ここらへんは割愛。以下をどうぞ。テーマなんかや設定もお好みで。

    » WordPress のはじめ方 – スタートガイド – WordPress Codex 日本語版

  • ユーザーの管理
  • Adminはテストエントリーとかもあるので削除します。独自のユーザーを設定してログアウト、ログインしてからAdminを削除します。

  • mt-export.txtからインポート
  • WordPressのインポート機能を使ってMTからのエントリーを読み込みます。さきほど作ったmt-export.txtは/wp-contentにコピーしておきます。

    wp_import.gif

    ↑ ファイルを設置してからインポートする方が好き。

  • エントリーIDを確認する
  • 次がちょっとトリッキーなのですが、インポートされた記事の最初のIDを調べます。

    wp_id.gif

    ↑ マウスカーソルを最新記事にあわせると最後についているこれ。クリックしてアドレスバーから調べてもいいかも。

  • マッピング用のSQLを作る
  • ここまで来たら、WPのIDとMT上での固定URLのマッピングリストを作ります。適当にExcelを使いましょう。さきほど作ったpostnames.txtをコピー、URLとタイトルを分けるために「データ」「区切り文字」「|で分離」をしてみます。

    そのあとにWPのIDを横に列を作ってだだっと連番降順でフィルします。

    excel.gif

    ↑ こんな感じ。

    一応記事数や、最初と最後のIDと記事タイトルがあっていることを確認してから、Excelの関数を使ってSQL文を生成します。

    wp_sql.gif

    ↑ こんな感じでIDとURLを使ってSQL文を作ります。

    一応関数に使うコードも。

    ="update wp_posts set post_name='"&C1&"' where id="&B1&";"
    

    これを使えば次のようなSQL文が出来るはずです。

    update wp_posts set post_name='post_90' where id=207;
    

    ここまで出来たらA列をコピーしてpost_names_update.sqlとして保存、/wp-contentあたりにアップしておいてください。

  • SQLにてWordPressのデータベースを更新
  • WordPressのwp_postsというテーブルにpost_nameというのがあるので直接SQL文を使ってそれを更新します。さきほどのpost_names_update.sqlをアップしたディレクトリに移動して以下を実行します。

    mysql -uUSER -pPASSWORD DB < post_names_update.sql
    

    あっさり終了すると思うので次のステップに。

  • WordPressでパーマリンクの設定
  • ここで固定URLを使ってパーマリンクの設定をします。僕の場合はarchives以下に置いていたので次のように設定。人によってここらへんは変更してください。

    wp_permalink.gif

    ↑ ここね。

    一応コードも。

    /archives/%year%/%monthnum%/%postname%.html
    

    あとは変更を保存して指示どおりに.htaccessを設定しましょう。

    ここまで来たら実際にサイトを見てみます。昔のURLそのままにアクセスできているはずです。ただし、昔アップした画像とかが表示されませんよね。そこらへんを処理していきます(インストールしたディレクトリによっては表示されるかもですが)。

  • 画像をコピー
  • フォルダがそのままならいいですが、サーバーが違ったり、インストールディレクトリが違う場合はアップした画像をフォルダごとコピーしましょう。なお、その中にMTで生成したHTMLがあれば一括削除しておきましょう。使わないので。

    再帰的に削除するにはこちら(赤松さんに感謝!)。

    find . -name "*.html" -print (一応確認)
    find . -name "*.html" -exec rm -f \{\} \;
    

    これで画像は表示されるようになりますが、実在する/archivesとRewriteRuleの設定が.htaccess内でバッティングするため月別アーカイブなんかが表示できなくなります。そこでここで画像ファイルの保存場所を/archives_imgに名称変更し、/archives以下の画像ファイルがアクセスされたときだけ/archives_img以下を呼び出すようにします。

    まぁ、ここらへんはざっくり以下のように設定してください(.htaccessね)。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule archives/(.*\.(jpg|jpeg|png|gif))$ archives_img/$1
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    これで月別アーカイブも画像ファイルも表示されるようになりましたね。

  • いろいろ設定
  • ここまでで一応終了ですが、他にもSitemapやらAdSense、Google Analytics、プロフィールページなんかもうまいこと処理して移行を完了させましょう。無事運用ができるようになったらMTを削除してバックアップなんかも設定しましょうね。要らないcronも削除しておくのが吉かと。

以上、駆け足で見てきましたが、冬休みにブログの移行なんかを考えている方はぜひどうぞ。環境によっては上記のとおり行かない場合もありますが、がんばって解決してみてください。

今はまだSIMPLE*SIMPLEだけですが、年末年始にかけて百式やこのブログも移行予定です。ようやくWordPressの便利プラグインとか使えるようになりましたな。そこらへんも今後アップしていきたいところです。

ブログシステムはどれも一長一短あるでしょうが、WordPress、シンプルでいいですよ。本体はあくまで軽く、そのあとはお好みで拡張していく楽しみがあります(そういう意味でFirefoxに似ています)。いやぁ、強烈に勧められてやってよかったなぁ。

■ 追記

こちらの方法でもうまくいくようです。基本的に同じことかな・・・。

» MovableTypeからWordPressへのURL込みの移行方法 – Wiki@browncat.org

Pocket

SPONSORED LINK

39 Comments

  1. パーマリンクやタグをそのままにMovableTypeからWordPressへ簡単に移行する方法

    2006年の9月にLivedoor BlogからMovableTypeに乗り換えて2年強が経過したが、再構築のスピードやエラーに辟易しており、WordP…

  2. Pingback: WordPress導入後の設定いろいろ | IDEA*IDEA ~ 百式管理人のライフハックブログ ~

  3. Pingback: MovableTypeからWordPressに移行する人が増えている模様。 | きになろぐ

  4. Pingback: CUTPLAZA DIARY » Movable TypeからWordPressへURL込みの移行

  5. Pingback: MTからWPへ。 | 可愛いデザインのホームページ制作なら東京のホームページ制作会社フィヨルド

  6. Pingback: [N]

  7. Pingback: Movable Type と WordPress 両方使えばよくない?(というか融合すればよくね?) - ElectronicBrain is eating BreakFast

  8. Pingback: wordpressについての思い出話 - atl*weblog

  9. Pingback: AQUALUNA-空と海が出逢う場所

  10. Pingback: あちょぷログ » WordPress参考サイト/記事

  11. Pingback: WordPressに移行しました。 - 30からのBlog

  12. Pingback: CUTPLAZA DIARY » MovableTypeからWordPressへの移行とアクセスアップ関連

  13. Pingback: WordPressへ移行完了 | 螺旋日誌

  14. Pingback: 「新・よろずや工房」のPCカルテ » ロリポップブログから引越し

  15. Pingback: 今年はIT元年です(俺限定) - atl*weblog

  16. Pingback: 玄鵬の地下室

  17. Pingback: WordPressに移行 « やりたいことは全部やる。

  18. Pingback: MTからWPへ固定リンク変えずに移行できなかったけど克服するまでの道のり - ムジログ

  19. Pingback: ブログをMovableTypeからWordPressに移行しましたよ — ゾンビ畑 zombiebatake

  20. Pingback: 頭ん中

  21. Pingback: アメリカでがんばりましょう » Blog Archive » Movable Type から WordPress に変更 - シリコンバレーで働くプログラマーが見つけたこと、感じたこと、言いたいこと。

  22. Pingback: ブログをMT(3.32)からWordPressに移行しました : akiyan.com

  23. Pingback: Movable Type から WordPress に移行 - ダメ出し日記

  24. Pingback: kzk9.netをEC2へ移行 - moratorium

  25. Pingback: Wordpressへ移行完了 | Frea.Inventory

  26. Pingback: ぷりどうぐ - WordPressにSereneBachからエクスポートしたデータをインポート

  27. Pingback: NO CONCEPT Blog - WordPressへの移行 ひとまず完了

  28. Pingback: HiStyle : Hi Style = His Style

  29. Pingback: ぷりどうぐ

  30. Pingback: maxfactory | Flash lite(携帯Flash)、Flex、widgetなどの技術メモ » MT→WPに移行

  31. Pingback: Astronika blog - ブログをMovableTypeからWordPressに移行してみた

  32. Pingback: WordPressで導入したプラグインまとめ - IDEA*IDEA ~ 百式管理人のライフハックブログ

  33. Pingback: blog移行しました(MT→WP) « kota.blog

  34. Pingback: MT4からWordpressに移行しました - WEBマーケティング ブログ

  35. Pingback: なんかいろいろなこと

  36. Pingback: 乗り換え « Gangalee Web Log

  37. Pingback: リニューアル完了。mtからwpに移行 « kawama.jp

  38. Pingback: サーバお引っ越し

  39. Pingback: qyen.info サーバー移設完了 - ニヤリ

Leave a Reply

Your email address will not be published. Required fields are marked *