Movable Type で作ったブログを更新停止して、普通のHTMLコンテンツとして永久保存したい。
ブログ内のリンクを絶対URLから相対URLに変換したい。
コメント入力フォームを消したい。
静的HTML永久保存版な感じにしたい。
でも、そういう機能ってMTには無いっぽいなぁ……

ブログをやめるとき、それまでの記録をどうやって残すんだろう。
tDiary とか他のCMSもどうしてるんだろう。

と思って、ちょっと考えてたら、どうやらできた。
以下、その手順メモ。

1. 動的なもの(CGIを利用するやつ)を削除する。

1-1. コメント機能をOFFにする
ウェブログの設定 > 設定 にて、
「未登録の読者からのコメントを受けつける」のチェックをはずす。
「登録されたコメンターのコメントは許可する」のチェックをはずす。
「サイトの再構築」を実行(1stepずつ進めないとコワイので)。

1-2. 検索窓を削除する。
テンプレート > メインページ にて、
「テンプレートの中身」から検索窓の記述部分を削除して「保存」して「再構築」する。

これで、とりあえず普通のHTMLコンテンツになった。
(今回は、トラックバックを受け付けないブログが対象だから、そのあたりは無視)

2. 絶対リンクを相対リンクへ変更
wget の -k オプションを使って、ウェブサーバからMTで生成したHTMLやアップロードした画像ファイルをローカルに取得。

例:

wget -nc -r -np -l 0 -k -x http://www.nilab.info/kohaku/nikki/

wget のオプションの意味
-nc 取得済みのファイルは取得しない
-r 再帰的に取得する
-np 親ディレクトリを再帰的に取得しない
-l 再帰取得の深さを指定する(0を指定すると無限)
-k 取得したHTMLファイル内の絶対リンクを相対リンクへ変換する
-x ディレクトリ階層を作る

たぶん、これでだいたいは静的永久保存版なHTMLになってるはず.

今回の実験対象:
MTで作ったページ(もう無いけど): http://www.nilab.info/kohaku/nikki/
静的永久保存版なページ: http://www.nilab.info/resource/private/kohaku_nikki/

Movale Type の文化?:
MTでは、画像をアップロードすると、表示させるためのタグを準備してくれるが、これが絶対URLを指定していたりする。
エントリー間のリンク等はMTが自動生成していて、これも絶対URLになっている。
どうやら、MT文化的には絶対URLでリンクを張るらしい?
あと、RSSフィード内のURLは絶対URLなのはなんでだろー。

GNU Wget 偉い!:
複数のHTMLのディレクトリ構造を自動解析して、絶対URLを相対URLに置換してくれるツールは無いかなぁ……とか探してたけど、そういう機能に特化したソフトは見つからなかった。
もしかして、gethtmlw とか wget だったらできるかも? と思って調べたら wget で可能なことがわかった。
wget は便利だなぁ。/からはじまるようなURLがリンクに指定されていた場合は、相対に置き換えてくれるのかどうかわからないけど。

絶対相対用語:
この問題を解決するために「絶対パス 相対パス 変換 リンク」みたいなキーワードでWebを検索していたけど、どうやら「パス」でなく「絶対URL 相対URL」あたりのキーワードのほうが適切だったらしい。絶対URLはなんとなく納得するけど、相対URLってのはOKな用語なのかな。なんか、ちょっと引っかかるような。

MTプラグインで良いのないかなぁ:
ちょっと違うけど、まにてん堂: アーカイブパスの相対指定用プラグイン というのを見つけた。
これは、更新停止が目的ではなくて、移転するときに便利そう。

参考:

tags: zlashdot Weblog MovableType

Posted by NI-Lab. (@nilab)