PHP化しました。リンク切れにご注意ください

2020年5月20日

この2日間で,Movable Type(以下MT)のアップデート作業に絡んでブログの構成を大幅に見直しました。途中アクセスされた方は,サイトがドロドロになっていて「なんじゃこりゃ?」と思われたのではないかと思います。

ディレクトリで参照された場合はいいのですが,今までの個別の記事にリンクされている場合は,それは確実にリンク切れになっています。

普通はこういうときは「リダイレクト」といって,新しいページに自動的に飛ぶように設定するのですが,すでに古いエントリー構成は影も形もありませんので,飛ばしようもありません。なぜかと言うと,3.151から3.34へのアップデートなので,細かいところがいろいろ違うはずなので,どうすべきか迷い,結局3.34を新規インストールをしてから3.151で書き出したログを読み込ませたからです。

まあうちの記事はまだ99件しかないので,大した問題でもないだろうとタカをくくっております。お叱りがあったらむしろ喜びます。古いURLは確かに検索エンジンにも拾われてはおりますが,スパマーにも拾われております。ここらへんで振り切りたいところであります(と言っているうちにすでにいくつか届いてるorz)。

同様の作業をこれからされる方のために,「私は実際にこうやった」ということではなく,「こうやるべきだった」というのを以下にまとめときます(笑)。

1. MTの新規インストール

① まず古いMTからログを書き出す

念のためFTPで生ファイルのバックアップ。両方やっとく。画像にも注意する。

テンプレートもできれば全部バックアップ。やる気力があれば。なければもう一度参考にしそうな部分だけとっておく。

② 新しいMTをダウンロードしてインストール

ダウンロードはシックス・アパートのサイトから。

純正ヘルプもよいが,うちのサーバーはロリポップなので,そのヘルプを参照しながら。
とりあえず,デフォのテンプレートで動作させるとこまで。

③ MTの動作の設定

あわてて過去ログを読み込ませる前に,きちんと設定しておくべき。

だいたい小粋空間さんのおっしゃるとおり設定するのがよい(という結論に試行錯誤の末たっした)。具体的には

  1. 管理画面を「詳細モード」に切り替える(これは本体じゃなく管理ツールの設定)
  2. アーカイブ用ディレクトリを作成する(archivesディレクトリ以下に記事がたまるようにする)
  3. 拡張子を .php にする(php化)
  4. エントリー・アーカイブのパス・ファイル名を変更する(「%y/%m/%d-%h%n%s%x」とする)
  5. 更新Pingを設定する
  6. スタイルシートの自動再構築を無効にする
  7. コメント/トラックバックを無条件に受信する
  8. エントリー投稿画面をカスタマイズする
  9. コメントに TypeKey を利用する
  10. クリエイティブ・コモンズ ライセンスを設定する

の10項目。5から下はお好みで。3と4は個別エントリーのURLを左右するので,けっこう重要。なお小粋さんの記事では「%y/%m/%d-%h%n%s%x」にハイフンがなかった。にもかかわらずこのサイトのファイル形式はハイフンありのものである。ハイフンがあるほうが見やすいだろう。

拡張子phpについては,.htaccessに

AddType application/x-httpd-php .html

と書き足して,htmlのままphp命令を解釈できるようにする手もある(これだとリダイレクトは要らないし)。

このほか,小粋空間のテンプレートを使うなら「日別アーカイブ」を公開に設定(チェックボックスにチェックを入れておく)。

④ 過去ログのインポート

これは管理ツールから一発。場合によってはパーマネントリンクに新旧で不整合が生じることがあり,画像類のリンクにリンク切れが生ずることがある。手動で修正。

2. テンプレートのカスタマイズ

⑤ テンプレートを入手・カスタマイズ

3.3x用のテンプレをゲットしてカスタマイズあるのみ。

この作業がとてもうざいので,この機会にphp化を画策。特に3カラム型を利用する人などにおすすめ。

なお,小粋テンプレの1行目のxml宣言のためにエラー

Parse error: parse error, unexpected T_STRING in […] on line 1

が出るので,管理ツール「テンプレート」→「インデックス」「アーカイブ」内のすべてのテンプレートの1行目を

<?php echo '<?xml version="1.0" encoding="<$MTPublishCharset$>"?>’."\n" ?>

と修正すること(「."\n"」はなくても動くが……)。あとは記事を再構築して動作を確認。

⑥ テンプレートの分割(モジュール化)

上と同時にすることになるが,サイト内で多用する「共通部品」がある場合は,それをモジュール化する。高速化するし,メンテナンス性が上がる。

うちではヘッダー(タイトル)部分,左コラム,右コラム,あとスクリプト部分をそれぞれモジュール化。これまでは,ちょっとデザインの変更をするにも何度も同じ記述をコピペする必要があったが,もうその必要はない。一度いじればすべてのページに変更が反映される。しかも再構築がかなり軽くなった。

3. 今回はやっていないが,今後やりたいこと

⑦ 条件付きgetの設定。

4. 感想

生まれ変わった気分である。いや実際生まれ変わったし。かつてはディレクトリの中身を覗きたいとも思わなかったが,形式的に統一も取れて,気持ちがいい。逆に言うと気持ちだけの問題かも。

いや,メンテナンスとかデザイン変更はぜんぜん楽になった。いまどきは,便利なものがありますなぁ。マジで。

あと実は親ディレクトリで多言語対応をやりたいのだが。リダイレクト勉強しないと。

参考