- 2006年7月17日 21:13
- インターネット
エントリー・タグ機能を実装してみた
MT3.3にアップグレードしてから二週間あまり。MT3.3の新機能として追加された"タグ"という概念。せっかく苦労してアップグレードしたので、とりあえず実装してみました。まぁ前からやりたかった事もあったので、それもついでに。
タグとは
タグとは、エントリーにつけるジャンル分けのための語句(ラベル)です。Movable Type では記事をカテゴリごとに分けることができますが、さらにタグを使うことで、エントリーごとに細かくジャンル分けしたり、ウェブログ全体の記事から関連のあるエントリーを簡単に見つけることができるようになります。(※すべてのページで使用可)
エントリー・タグを活用すると以下のような表示が可能です。
- ・特定のブログ内のエントリー・タグの一覧表示
- ・タグ・クラウドを使ったエントリー・タグの一覧表示
- ・エントリーで入力されたエントリー・タグの一覧表示
- ・特定のエントリー・タグが入力されたことの確認
- ・特定のエントリー・タグが入力されたエントリーの一覧表示
その他詳しい詳細については、Movable Type 3.3 エントリー・タグ詳説がとても参考になるので、そちらをご覧になられた方がよいと思います。
タグって閲覧者にはどう見えるの?
「タグ」って言われても、いまいちピンとこないでしょうけど、基本的にはサイト内検索をしているのと同じ感覚。運用者側が任意で各エントリーに付与したタグに基づく、エントリーが表示されるような仕組みで、どちらかと言えばカテゴリと似た感じでしょうか。
事実、タグ名称を表示させてタグ用のリンクを追加すると、「mt-search.cgi」の生成するページが表示されます。
という事で勘の良い方はもうお気づきでしょうが、パラメータを含んだ動的なURLを吐いて、エントリーの一覧ページが表示されるという仕組みです。実装面でもちょっと調べれば、ここまでは特に難しくないです。
Apacheモジュール mod_rewrite
どうせ「mt-search.cgi」で動的ながらURLが新規に生成出来るのなら、せっかくだしSEO対策をやってみるかと考えて、「mod_rewrite」も実装してみました。
「mod_rewrite」とは、ルールベースの 書き換えエンジンを使い、要求された URL を適宜書き換えます。 サポートするルールの数、および各ルールを適用する際のルール条件 の数に制限はなく、本当にフレキシブルでかつパワフルな URL 操作 メカニズムを提供します。この URL 操作に先立ち、次のようにいろいろな 評価を行なうことができます。たとえばサーバ変数、環境変数、HTTP ヘッダ、 タイムスタンプ、さらに外部データベースの検索結果までを評価の対象として、 各種のフォーマットを使った粒度の高い URL マッチングを実現できます。
この「mod_rewrite」を使って、パラメータを含んだURLを静的なURLに置換し、検索エンジンに認識させてやろうという目論みです。
という訳で、結構苦労しましたがタグ機能と「mod_rewrite」を組み合わせた実装方法は以下の通りです。
mt-search.cgiを使ったタグ別ページの標準URLは、
<mt-search.cgi?tag=KEYWORD&blog_id=BLOGID>
となるので、このURLを以下のように置換しました。
<http://rakish.org/typer/tag/KEYWORD>
以下の内容を「.htaccess」ファイルに記述してブログのルートディレクトリに置きます。
RewriteEngine On RewriteRule ^tag/(.*)$ cgi/mt/mt-search.cgi?tag=$1&blog_id=IDナンバー
※最後の"IDナンバー"はブログによって異なります。
こうすれば、例えば
<置換後URL>にアクセスすれば、<置換前URL>と同じ結果を得る事が出来ます。
静的化したエントリー・タグURL MT上での設置方法
ここまではいいとして、ではどのようにこの置換後のURLを動的に生成してテンプレートにリンクとして出力するかですが、これは以下の通り。
エントリー・タグの名称を生成する<$MTTagName$>を記述しアンカータグで囲み、"href="の部分に<$MTBlogURL$>tag/KEYWORD としてみました。これで、KEYWORDの前までは固定の文字列で、KEYWORD部分だけが可変になり、動的に置換後のURLを生成する事が出来ました。
これでエントリー・タグ別のページを検索エンジンにインデックスさせる事が出来るかな。しばらく様子を見てみましょう。
- Newer: 静的にRewriteしたURLがインデックス
- Older: Web Inside Blog
コメントとトラックバック