mt-view.cgiを使ってみる

Movable Type には、本家提供のPerl版ダイナミックパブリッシング「mt-view.cgi」が、ひっそりと同梱されている。
とりあえず中身見たりしながらテスト環境で動かしてみたのでそのまとめをメモしておきます。

あらすじ

mt-view.cgiは、管理画面から指定したアーカイブ・マッピングの設定を考慮してくれません。
mt-view.cgiは、「メインページ」という日本語のテンプレート名を理解してくれません。
mt-view.cgiは、ブログのidをURLに欲しがります。

ということで、本家ダイナミック・パブリッシングの機能を一部流用しつつ、mod_rewriteとアーカイブ・マッピングを使って設定してみます。

ブログの作成

まず最初にすることは、mt-config.cgiに以下の一行を追加することです。

SafeMode 0

これでMTの安全装置が解除されます。デンジャラスです。

さて、ブログを作成しましょう。きちんとサイト・パス、サイトURLの設定もしてください。
普通にブログを作成したら、「メインページ」テンプレートのテンプレート名を「Main Index」に変更します。
次に、何でも良いのでいったんダイナミックパブリッシングを有効にします。これでブログのサイトパスで指定したディレクトリに「.htaccess」ファイルが作成されます。
このファイルをちょっと変更して、ブログに対するアクセスがmt-view.cgiによって処理されるようrewriteを適用させます。

おっと、その前にブログのIDを把握しておきましょう。ブラウザのアドレスバーに表示されているURLを見て、「blog_id=*」という部分を探してください。「*」の部分がブログのIDになります。

.htaccessの編集

変更する必要があるのは2箇所です。とりあえず.htaccessファイルを開いてみましょう。

12行目に、「index.php」「index.html」などとファイル名が並んでいると思います。その最後に、mtview.phpファイルへのパスがあるので、これをmt-view.cgiへのパスに変更してください。そして、mt-view.cgiの後ろに、さらにURLのようにブログIDを追加します。
mtのインストールディレクトリのURL(CGIPath)が「http://example.com/cgi-bin/mt」で、ブログIDが1の場合、次のようになります。

    DirectoryIndex index.php index.html index.htm default.htm default.html default.asp /cgi-bin/mt/mt-view.cgi/1/

もう一箇所、25行目も同じように書き換えます。こちらは、ブログIDの後ろにさらに「$1」と加えてください。

  RewriteRule ^(.*)$ /cgi-bin/mt/mt-view.cgi/1/$1 [L,QSA]

この最後の「$1」は、ブログIDとは関係なく常に「$1」です。

アーカイブ・マッピングの編集

これは、mt-view.cgiが受け付けるURLが決め打ちになっているので、黙って従うほかありません。各アーカイブで「カスタマイズする」を選び、以下の通りに設定してください。

エントリー
entry/%E
月別
archives/%y/%m
カテゴリー
section/<$MTCategoryID$>

動作確認

これで、一通りの設定は終了です。
MTの出力する.htaccessでは、実際にファイルがある場合にはそのままファイルが呼び出される設定となっているので、ブログディレクトリから.htaccess以外のファイルを削除してブログにアクセスしてみてください。
ファイルが無いのにブログが表示できたなら大成功です。お疲れ様でした!