2xup.org

Movable Type ブログ検索や tag 検索の結果を素敵な URL で

もうちょっと UI が解りやすくなるともっと良いのだけれど Flickr にアクセスしていつも良いなあと思うのは、直感的な URL だと思います。例えば /photos/kaminogoya/ にアクセスすれば僕の写真がみれます (最近のアカウントは不思議な文字列になっていますけれど…。設定できるのかな?)。そのあとに sets/ とつければいくつか用意された Photo Set の一覧ページに移動します。また、/こんな風にわかりやすいと、一度アクセスしたあとであればなんとなく解るようになってきますよね。こういった URL もデザインのひとつだと思います。

おなじように解りやすく気付いてからとても重宝しているのが microformats 関係でもおなじみ Technorati のウェブサイトです (.com の方)。Technorati では Search, Tags, Blog Finder, explore とメニューが用意されていますが、各々パスが切られていてその名前も解りやすいものになっています。そして各々のサービスの検索結果は、http://technorati.com/サービス名/検索キーワード でアクセスできます。例えば、最近 2xup というキーワードを含む記事を検索したい場合は、http://technorati.com/search/2xup にアクセスすれば良いわけです。

Movable Type の検索でも同じ事ができます。本来 Movable Type のブログ内検索は、

http://foo.bar/mt/mt-search.cgi?IncludeBlogs=BogID&search=検索キーワード

といった URL になりますが、Apache の mod_rewrite モジュールを利用して、http://foo.bar/search/検索キーワードという風にしてみます。今回はブログの URL が http://foo.bar/ で mt-search.cgi の場所が、http://foo.bar/mt/mt-search.cgi の場合を例に RewriteRule を書いてみたいと思います。

http://foo.bar/ のディレクトリに以下のような内容の .htaccess を用意します。

RewriteEngine On
RewriteRule ^/search/(.*)$ /mt/mt-search.cgi?IncludeBlogs=BlogID&search=$1

^/search/(.*)$http://foo.bar/search/検索キーワード にアクセスした場合という設定をし (正規表現で^は文字列の先頭、$は末尾)/mt/mt-search.cgi?IncludeBlogs=BlogID&search=$1 でもともとの検索結果の URL に書き換えを行うという処理をします。

BlogID には検索対象の BlogID が入ります。

これで、http://foo.bar/search/検索キーワード でアクセスすると、検索結果が表示されるはずです。実際に 2xup でもこの方法を利用して検索結果や Tag 検索の結果を表示する URL を変更しています。試しに microformats というキーワードを含むエントリーの検索結果と、同じく microformats という Tag がつけられたエントリー一覧への URL を以下にリストしてみます。

このカスタマイズは、ロリポップ!や、SAKURA Internet のレンタルサーバで利用できることを確認しています。Movable Type 3.3 では Tag 機能が追加されました。Tag の検索でも同じようにし、http://foo.bar/tags/Tag名 といった URL でその Tag を含むエントリー一覧にアクセスできるとステキですね。