最終更新

いちいち記入するのが面倒だったので外部JavaScriptファイルで最終更新日時を表示するようにしていた。

index.htm

<!-- bodyの中 -->
<script language="JavaScript" type="text/javascript" src="date.js"></script>

date.js

var modified = new Date(document.lastModified);
var year = modified.getFullYear();
var month= modified.getMonth() + 1;
var date = modified.getDate();
document.write( "最終更新:" + year + "年" + month + "月" + date + "日" + "\n");

 
設置したときには問題なく動作していたけど、久しぶりに設置ページを見たら本日の日付になっていた。
(「アクセスした日」を表示するようになっていた)
思い当たるのはサーバのリプレイスの通知があったぐらい。

SSIを使うと正しい日付が表示されることが判った。

<!--#config timefmt="%Y年%m月%d日 %H時%M分"-->
<!--#flastmod file="ファイル名.shtml"-->

 
しかし「正しい日付を表示するためだけにファイルの最終更新日を変更する」という矛盾した作業に疑問を持つ。
そこで思いつきでJavaScriptでSSIを書いてみた。

date.js

var url = document.location.href;
var sa = url.split("/");
var name = sa[sa.length-1];
document.write("<!--#config timefmt='%Y年%m月%d日 %H時%M分'-->\n");
document.write("<!--#flastmod file='" + name + "'-->\n");

実行結果は

<!--#config timefmt='%Y年%m月%d日 %H時%M分'-->
<!--#flastmod file='index.htm'-->


式展開されていない。実行順序に問題があるのだろう。

さーて、困った。
「正しい日付を表示させる為にファイルを修正する必要がある」という矛盾

  • 対象ファイルのタイムスタンプを控えておく
  • HTMLファイルを修正する
  • touch -acm -t YYYYMMDDHHMM file_name

これなら大丈夫なはず。