MultiViews のための拡張子戦争が終結
このエントリで書かれている内容は、今となっては時代遅れで陳腐な廃れた内容です。真に受けず、十分にご注意ください。
Trackback で送信される permalink から拡張子を抜く方法に終止符が打たれた。
これまでのおさらいだ。読み飛ばそう。Apache の MultiViews を利用して URI から拡張子 (e.g.: .html .php ) を除去する場合、Movable Type では各テンプレートで MTEntryPermalink を用いずに permalink URI を出力させる工夫をしてきた。サイト内に関してはそれで完結するが、対外に向けて送信され、システマティックにリンクを生成する trackback において送信される permalink URI には拡張子が付いてしまう。そこで私はこれまで、trackback で送信される permalink URI に小細工を施して対処してきたのだった……
私は、trackback で送信される permalink URI にあまりにも囚われ過ぎていた。狭すぎた!頭が固まっていた!! そもそもの発想が違っていたのだっ!!!
そう、シンヤさんが permalink URI そのものを根本から処理してしまうという、なんともクレバー手法を提案したのだった。これならば前述した trackback の問題はもちろん、テンプレートで素直に MTEntryPermalink を使えるし、Movable Type アプリケーション内で利用される URI も全て拡張子が除去される。素晴らしい。
ということで、拡張子戦争に終止符を打ったコードを記念にパッチプラグインとして公開します。需要が怪しいですが。plugins ディレクトリに put するだけで permalink から拡張子が消えます。私はしばらく使ってみて特に問題は起きていませんが十分な検証には足らず、またコードに自信もないためご利用はお約束の自己責任にて宜しく頼む。
最後に、ボケた考えをすっ飛ばす素晴らしいアイデアを下さった Shinya さんと、プラグインの草案に目を通していただき色々とアドバイスを下さった Topia 神に感謝です。Big up!
Shinya さんから提案いただき、remove-ext-from-permalink.pl を更新しました。本質は初版と何も変わっていません。
Version 0.2 を公開。Permalink のファイル名が index の場合はファイル名も削除するようにしたのと、削除する一番末尾の拡張子を MT で設定したアーカイブの拡張子に変更しました。
index というファイル名はいわゆる DirectoryIndex で一般的に用いられる名前ですが、次のバージョンでは index 固定ではなく設定で変更できるようにしたいですね。削除する拡張子もコンテントネゴシエーションで利用可能な拡張子だけに限定できるよう、手動で設定できればと思います。
Version 0.3. 昨日は何か忘れているようなと思いつつ、うっかりしていました。index を IndexBasename から取得するようにしました。IndexBasename は mt-config.cgi で設定できます。デフォルトでは index になります。
このエントリで書かれている内容は、今となっては時代遅れで陳腐な廃れた内容です。真に受けず、十分にご注意ください。
- タグ
- Movable Type
- MultiViews
- obsolete
- plugins
- 公開日時
- 2005-06-30T01:58:57+09:00 @749
- 更新日時
- 2006-03-12T21:30:23+09:00 @562
- Permalink URI & TrackBack URL
- http://blog.drry.jp/2005/06/30/0158
TrackBack ( 4 )
- remove-ext-from-permalink : permalinkから拡張子を消すプラグイン from またたび.ws
- 2005-07-14T21:58:07+09:00 @749
- 毎度お馴染みマニアックエントリー、MovableType使いの方以外はサクっと...
- トラックバック送信されるURLから index.* を排除する from はぁい、ちゅうもくちゅうもくぅ~
- 2006-03-11T10:25:33+09:00 @749
- Permalink の最後を index.* (* に該当するのは、html,p...
- MT::Entry->permalink from hPod
- 2006-03-29T01:27:11+09:00 @749
- ということで、 MT::Entry->permalink が URL ( $url )を返す直前のところに、次のように書き加えた。 MTArchiveLi...
- 拡張子戦争は終わっていなかった from asamuzaK.jp
- 2006-05-25T14:07:26+09:00 @749
- TypeKey IDのサインイン/サインアウトをしたらなぜか出てしまうURIの拡張子を消す
コメント ( 3 )
こんにちは。
MT3.2で、エントリーの出力フォーマットで最後をindex.html とか index.php とかにすると、Permalinkは index.~ が排除されるのですが、トラックバック送信先のURLやブログメニューのエントリーページにある「エントリーの確認」のURLは排除されないので、どうしようかと思っていたところでこちらのエントリーを見つけました。
プラグインの $url =~ のところを変えただけなのですが、公開しても問題ないでしょうか?
ちなみに、Perl等に関しては素人同然です。^^;
なるほど、そういったこともありますね。早速少し改造してみたので、すぐに公開します。
クレジット等を残して頂ければ、改変や再配布は自由です。
対応くださるということなら、私が公開するまでもないですね。
期待以上の返答をしていただいてありがたいです。
どうも、ご回答とご対応ありがとうございました。