最近個人サイトに手を加えているのですが、サイト全体で共通のコード(meta要素やJavaScriptの読み込みなど)に手を加えることが多かったため、Movable Typeのテンプレートファイルから該当部分を取り出し、SSIを利用するように変更しました。インクルードファイルはMovable Typeのテンプレートとはせず、エディタで作成してアップしました※。
- ※ Webサイトを構築した当初はMT4で、「ウェブサイト」という概念がなかったためMTで生成していないページがあること、またローカルで該当ファイルを編集した方が手早く更新できる、というのが理由です。
ほとんどのページはこれで問題なく表示されていたのですが、唯一コメントプレビューページとコメント完了ページで不具合が発生していました。不具合の内容は、SSIが実行されず、テンプレートに記述したSSIがそのまま出力されていることです。
- テンプレートに記述したSSI
<!--#include virtual="インクルードファイルのパス" -->
- インクルードファイルの内容(例)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script type="text/javascript" src="/shared/js/jquery.lightbox-0.5.js"></script>
<script type="text/javascript" src="/shared/js/mjl.js"></script>
<script type="text/javascript" src="/shared/js/run.js"></script>
これは、コメントプレビューページとコメント完了ページが静的に出力されたHTMLファイルではなく、CGIファイルで処理されるためです。そこで、簡単に解決する方法を考えてみました。