「+α」ってのは、野球の後攻チームがリードして9回裏が行われないときスコアボードに「X」と書いたのが「α」に間違われたことからはじまったものですが。それはともかく。
カテゴリがいいかげん肥大化して来たので、分割を自動で行うようにプラグインを導入しました。ARTIFACT -人工事実- | MovableTypeのページ分割/Permalinkの変更とか、野良犬の塒: カテゴリ一覧を分割表示に変更とか参照。以下、さくらインターネット用に補足もかねてまとめ。
注:当サイトは、旧さくらウェブに移転したときにCGIがまともに動かなかったために自分のiBookG4(MacOSX Panther)上でMOVABLETYPE2.65を構築して、出来たファイルだけFTPでアップしてるんですが、たぶん手法は同じでしょう。ちなみにMacOSX上でのMOVABLETYPEの動かし方は以前のエントリを参照ください。なおPHPを動かすためには/etc/httpd/httpd.confの1065行あたりの「AddType application/x-httpd-php .php」がオンになってないといけません。以下長文なので追記で。
とりあえず、なにはなくともMTPaginateというPluginをダウンロード、解凍したplファイルをMT/plugins/ディレクトリに入れます。このプラグインを使うためにはPHPじゃないといけないので、ブラウザからMTを開いて「BLOGの設定」→「アーカイブの設定」でCategoryの「アーカイブ・ファイルのテンプレート」(デフォルトでは空欄)に「cat_<$MTArchiveCategory dirify="1"$>.php」と記入。最初の「cat_」というのは別にいらないんですが、ファイル名ソートが楽なので私はこのままで使ってます。で保存。
あと、どんなタグを書けばいいかというのはきままにポロポロ: movable type 設定メモさんが非常に判りやすくまとめてくださっているのでご参照を。
で、ここからがうちもお世話になってる、さくらインターネット固有の問題。
新サービスのスタンダードプラン以上ではPHPが使えるようになって嬉しい限りなのですが、条件としてファイルには「実行条件がついていないといけない」というものがあります。
とりあえず、初歩の初歩。ファイルの権限(パーミション)について。
UNIXでも、それベースのMacOSXでも、たぶんWindowsでも、コンピュータにはすべて「ユーザ」、「グループ」というのが存在しています。そして、各ファイルはどのグループに属するどのユーザの持ち物なのかという属性がついています。そして、そのユーザになら読み取り、書き込み、あるいはプログラムの実行を許可する、そのグループになら許可する、それ以外のユーザには認めない、といった権限が決められています。それを数字で表したのが「777」とか「755」とかいうものです。
先頭からユーザ、グループ、その他の順に権限を指定していて、各数字は二進法に近いんですが、まあ「読み取り=4、書き込み=2、実行=1」として全部足し合わせたものだと思えばいいです。その権限がない場合は0です。つまり、「755」だとそのファイルのユーザにはすべてを認め、それ以外には読み取りと実行だけを許す、ということですね。通常WebサーバでPHPとかのCGI関連プログラムは「www」とか「nobody」という特別なユーザが実行するので、この「その他」に実行権限をつけないといけない、実行するにはもちろん読み取りも必要だから「5」以上がいります。さらに、さくらではすべてのユーザに全部の権限を認めるのはセキュリティ上好ましくないとの判断から、「777」はダメだと言っているので、「755」にしないといけないわけです。
ということで、MOVABLETYPEが吐き出すファイルの権限を「755」にしないといけない、というお話。で、実際にどうすればいいか、というと、これは実は「mt.cfg」をいじればいいだけです。まず、その128行目あたり(ヴァージョンによってかなり違うみたいです)の「HTMLPerms 0777」のコメント(#)を外します。ただ、これだけだとダメで、その上(同様に差異がある可能性)の「HTMLUmask 0022」もコメントを外さないといけません。どうもマニュアルを読むと、HTMLPermsはデフォルトの666か777じゃないといけないみたいで、その上でHTMLUmaskでマスクをかける(つまり、値を引いている)ようです。これが検索した限りどのサイトにも書いてなかったのでちょっと試行錯誤しました(と思ったら、つい昨日野良犬の塒さんとこのコメントに書かれてる)。ちなみに、ターミナル(コマンドプロンプト)からファイルの権限を直接いじるには、「chmod 755 *.php」とかすればいいです。*は正規表現なので、そのディレクトリにあるphpの拡張子がついたファイルが一気に変更されます(MacOSXでは最初にsudoをつけてスーパユーザで実行しないといけないみたい)。なお、先ほどのプラグインもplファイルなので権限を755にしておきましょう。
もうひとつついでに、放映終了したカテゴリをサイドに表示しないようにするためのプラグインも導入。やはりARTIFACT -人工事実- | 特定のカテゴリを表示させないプラグインとか参照。ここから「FilerCategories.pl」をダウンロードして(HTMLドキュメントも一緒に落としておくと後々リファに便利)さっきと同じディレクトリに放り込む。こちらは別にHTMLでも有効なので、別に気にせずにどのページでも使えます。カテゴリをリスティングしているとこで、<MTCategories>タグの内部で「<MTFilterCategories exclude="sub1_douga">(…)</MTFilterCategories>」みたいにすると、excludeで指定したカテゴリだけリストされません。逆に「include」とすればそれだけがリストされるという案配。複数の名前を羅列するときは「|」で区切ります(FilerCategories.plの30行目あたり「$delim = '?|';」で変更可能)。
そうそう、さらに、キャッシュとか検索とかで以前のHTMLファイルに直接アクセスして来た人のために、自動で対応するPHPファイルに転送するようにしておきましょう。もちろん、いちいち各ファイルのヘッダに<META http-equiv="refresh"...>とか書く気にはならないので、.htaccessファイルを利用しましょう。もちろん自分のサーバで利用可能かはチェックしておきましょう。たとえばうちでは、拡張子以外は変えてないので「RedirectMatch permanent /cat_(.*)?.html$ /cat_$1.php」と.htaccessファイルに書き加えて、最上部のディレクトリに入れてます。(.*)は先ほどの正規表現で、これにマッチするファイルにアクセスした場合、そのマッチした文字列が$1に入り、それを利用して一番右側のファイルにリダイレクトされるという仕組みです。途中に改行を入れたり、ちょっとでも記述を間違えるとそのディレクトリ全体のファイルがアクセス不能になるので注意(といいつつ、自分でも何度も設定を間違ってしまった……。数分だけですが運悪く観れなかった方ごめんなさい)。
投稿者plateau: 2004年09月26日 21:39 [Mac]