MT3.01D で Permalink を新形式にすると .html という名前のファイルができてしまう件ですが、Ogawa::Memoranda さんにその原因と対策が載っていました。
⇒ Movable Type 3.0のIndividual Entry Archiveの命名方式の問題点
⇒ mt-resave-entries.cgi: basenameがNULLのエントリを再保存するCGI
まぁ、ほぼ予想通りといったところでしょうか。普通は Rebuild のときに basename が NULL かどうかをチェックしてちゃんと basename を設定しなおす処理を入れておけばいいだけのことなんですが。あと改行コードなど特殊文字の問題はサニタイジング(*1)の問題にも関係しそうだし….うーむ(^^;
*1) IPA の セキュアプログラミング講座「1-2. クロスサイトスクリプティング」が参考になります
Tags: Movable Type
「Rebuildのときにbasenameを設定し直す」、まあそれがよいのかもしれませんが、それは美しくないのですよ。
Rebuildというのは、実はDBに何の変更もせず、Read Onlyなのです。言い換えると、「Rebuild=静的にViewを生成する操作」なのです。
旧バージョンからのアップグレードスクリプトにmt-resave-entries.cgi相当の機能が含まれていればいいだけだと思います。
なるほど。2.x から 3.x へのアップグレードのときだけに問題になるわけだしアップグレードスクリプトにその機能があればとりあえずよさそうですね。