カテゴリ: Web/blog アーカイブのPHP化
執筆時のVersion: Movable Type 3.17-ja
Movable Typeのインデックス、カテゴリアーカイブ、月別アーカイブをPHPに移行しました。
ただPHP化するだけであれば、ウェブログの設定で「アーカイブ・ファイルの拡張子」をphpにするだけですが、当サイトは文字コードに「Shift_JIS」を使っているために、PHPの設定によって文字化けしてしまいます。
そこで、次のような対策を施しました。
<? header("Content-type: text/html; charset=Shift_JIS"); ?>
これを、テンプレートの先頭行に追加するだけです。
PHPの設定で、
default_charset = "EUC-JP"
になっているのが原因のようです(この設定を触ることができないのです)。
あと、今までのテンプレートではSSIも多用していました。
ページ上部のタブやヘッダ、フッタ、目次などは、
<!--#include virtual="/hoge.html" -->
のように共用部分をインクルードしています。
それとは別にMovable Typeのテンプレート・モジュールを追加して
<$MTInclude module="hoge"$>
という方式も用いていますが、そうでない部分は次のようにPHPのインクルードに置き換えました。
<? include("<$MTBlogURL$>hoge.html"); ?>
また、SSIを使ってアクセス集計用のCGIも呼び出しているため、SSIの
<!--#exec cgi="アクセス集計.cgi" -->
は
<? virtual("アクセス集計.cgi"); ?>
に書き換えました。
当初、「.htaccessの設定を書き換えてPHPに対してもSSIを…」と考えましたが、PHPが「ただのHTML」として振る舞ってしまうために使えません。
.htaccessと言えば、アーカイブの拡張子が「.html」から「.php」になるため、次のように例のリダイレクト設定を書きました。
Redirect permanent /oldnew/archives/pc/index.html http://www.sofarts.com/oldnew/archives/pc.php
他にも、
Redirect permanent /oldnew/index.html http://www.sofarts.com/oldnew/
のように、旧トップアドレスを「index.html」付きでアクセスしてくるお客さんを誘導するための記述も追加しました。
もう一つ重要な設定は、「/」で終わるURIでトップページやアーカイブトップにアクセスされた場合は、きちんとindex.phpに誘導する目的で、.htaccessに次のような設定も追加しています。
DirectoryIndex index.php index.html index.htm
今までのHTMLをPHP化する前に、旧エントリURIとの対応表を作ってから再構築した方が良いです。サーチエンジン等で旧URIにアクセスされた時に、新しく作った.phpファイルに誘導するためです。
さて、今回のPHP化の本来の目的は「アーカイブの分割」ですが、それは次の段階で…
2005/08/02追記
個別エントリファイルもPHP化しました。
2005/08/02追記
アーカイブの分割を行いました。
2005/8/ 1 23:45 | URI | Web/blogカテゴリの記事をすべて読む