2006.12.03

MovableType

URLを変えずにMTのページ分割する方法と、再構築の負荷対策(MTPagenateプラグイン&mt-rebuild+cronを利用)

このブログもエントリー数が大分増えて来たので、カテゴリーアーカイブや月別アーカイブのページ分割を行いました。

ページ分割で参考にしたのはこのサイトです。
ネコの為に鈴は鳴る。 - After☆Taste Blog: MTpagenateでアーカイブを分割

ただ、このままだとURLが変わってしまうので、ちょっとコツが必要。

具体的にはメニューとかからのリンクが

http://blog.matake.jp/archives/カテゴリー名/

ではなく

http://blog.matake.jp/archives/カテゴリー名/index.php

に向いてしまうので、これを解決する裏技(?)をメモしておきます。


Apacheでindex.htmlよりindex.phpを優先させる

まず.htaccessブログのディレクトリでindex.phpを最優先させます。これは.htaccessに以下の記述を追加すればOK。

DirectoryIndex index.php index.html


MTPagenateプラグインが吐き出すリンクからindex.phpを消す

これは以下のサイトを参考に。
MTPagenateで分割のときに、phpな事を隠す方法

注)ここまでの2つを行った後で注意しないと行けないのは、MTの「設定->公開設定->アーカイブ・マッピング」においてindex.htmlを最優先にしておくこと。そうしないとMTPagenate以外の場所で生成されたリンク(メニューからのリンクなど)にはindex.phpが含まれてしまいます。


アーカイブ再構築の負荷対策

MTPagenateプラグインは静的アーカイブ内でしか動作しないので、毎回アーカイブを再構築する必要があります。ここですべてのエントリーを含むアーカイブの場合、

<MTPaginateContent max_sections="20">
   <MTEntries lastn="999999">
   <p>
      <b><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></b>
      <$MTEntryExcerpt$>
   </p>
    <$MTPaginateSectionBreak$>
   </MTEntries>
</MTPaginateContent>

のようにしてやる必要があるので、再構築の負荷はあがります。

するとトラックバックやコメントの負荷も一気にあがり、トラックバックが毎回タイムアウトエラーになったりします。

これを避けるため、全エントリーを含むアーカイブは「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックを外し、mt-rebuildを使って再構築するようにしましょう。

mt-rebuildの使い方はPRO' LOGUE: MT…定期的に再構築するを参考に。

ps.
いっそのことWordPressに移行しろという声もあがりそうですが、各エントリーのURLが変わるのがネックになってます。。この問題が解決できれば移行しちゃうかも。