MovableType側のブログを閉鎖。(2026/11)

うちのブログはMovableTypeで作成を開始し、しばらく前にWordPressに移行した。全ての記事の移行には成功しているものの、MovableType時代のページ間のリンクはMovableTypeのパーマリンクのままなので、MovableType側の内容を参照できる状態にしておかざるを得なかった。いずれは完全にWordPressのみで運用できるようにしたいと考えていて、改めて調査を行ってみた。

MovableTypeの廃止を行おうと考えたのは、MovableTypeを実際には使用していないにもかかわらず、安全に参照できるようにするためMovableTypeのアップデートに対応しなければならなかったためである。MovableTypeの各CGIはアクセス不能にできていたけれど、MovableTypeのスタティックフォルダは参照可能にする必要があったので、アップデートには従わざるをえなかったのである。

以前にもMovableTypeを廃止するための作業を行いかけたことがあって、その際にMovableTypeの記事とWordPressの記事をそれぞれエクスポートし、エクスポート内容を解析してMovableTypeとWordPressの各ページのURL対応表を作成していた。対応表に含まれるURLの総数は700件を超えていて、実際に記事間のリンクとして埋め込んだ箇所も200件以上あった。これだけの数があると手作業でWordPressの記事内のリンクをMovableType側のURLからWordPress側のURLに修正するのは現実的ではないので、何とか自動化できないか調査してみたけれど、その時にはいい方法を確立することができず断念することとなった。

最近になってMovableTypeの廃止について改めて考えてみたところ、記事内のURLを修正するのではなく、MovableTypeのページを指しているURLはそのままにしておいて、Apacheの設定でMovableTypeのページのURLをWordPressのページのURLに転送するという方法を思いついた。サーバーで使用しているApacheにはエイリアス機能があるので、これを利用することで対応できるのではないかと考えたのである。対応方法について検索してみた際に、より効率がいい方法としてRewriteMapを使ってページ間のリダイレクトを行う手法があることが分かった。

RewriteMapでは、テキストファイルによる対応表を利用したりスクリプト等での動的処理を利用したりしてURLのリダイレクトを行うことができる。今回のMovableTypeとWordPress間の転送については対象ページが700件ほどあるけれど、テキストファイルの対応表でも十分に対応できるとのことであったので、今回はテキストファイルを使用することにした。上記したURL対応表をRewrireMap向けのテキストファイルに加工し、Apacheの設定ファイルであるhttpd.confにRewriteMapを使用するための設定を追加。ただし、いろいろな罠にはまってしまい、予想以上に苦戦することとなった。

  • RewriteMap関連の記載自体に間違いがあった。(RewriteRuleの記載ミスなど)
    →記載を修正して対応
  • HTTP向け・HTTPS向けのRewriteMap関連の記載を両方ともhttpd.confに記載していたらssl.conf内のHTTPS関連の記載と競合してしまい、結果としてHTTPS用の記載が動作しなかった。
    →HTTPS用の記載をhttpd.confからssl.conf内に移動することで対応
  • WordPress側のページを参照しようとすると403 Forbiddenエラーになった。
    →WordPress側のURLにクエリ文字である「?」が含まれていて、Apacheがセキュリティ対応のため403エラーを返していた
    →RewriteRuleのフラグに「UnsafeAllow3F」フラグを追加することで対応

参考までに、今回行ったhttpd.conf内のRewriteMap関連の設定例を記載してみる。なお、「マップファイルのパス」・「サーバー名」・「ドキュメントルートのパス」・「MovableType側のページのトップURL」は実際の設定に置き換える必要がある。

# マップの定義(テキストファイルの読み込み)
RewriteMap rewrite-map "txt:マップファイルのパス"

# VirtualHost(80)内の設定(443側の記載はssl.confのVirtualHostに)
<VirtualHost *:80>
    ServerName  サーバー名
    DocumentRoot ドキュメントルートのパス
    RewriteEngine On

    # マップに登録がある場合のみ、UnsafeAllow3Fを許可して301リダイレクト
    RewriteCond ${rewrite-map:$1} .
    RewriteRule "^(MovableType側のページのトップURL/.*)$" "${rewrite-map:$1}"[R=301,L,UnsafeAllow3F]
</VirtualHost>

上記対応でMovableType側のURLを全てWordPress側のURLにリダイレクトできるようになったけれど、まだ、対応が必要な箇所があった。MovableType側のページに設定している画像等のメディアファイルについてはMovableType側のフォルダにあるメディアフォルダに保持しているので、これも対応しなければならなかった。この件については、MovableType側のメディアフォルダをMovableTypeのフォルダから移動しておいて、ApacheのAlias機能を使って移動元のURLで移動先のパスを参照できるようにした。

これでMovableTypeの廃止を完了することができたので、今後はMovableTypeのアップデートに従わなくてもよくなった。MovableTypeのアップデートは頻繁にあるものではないけれど、少し手間が減ったので良しとする。

コメントする