URL をきれいにする

今のところ、ブログアプリケーションの様々なページをリンクしている URL は見栄えの悪いものです。 例えば、投稿を表示するページの URL は以下のようになっています:

/index.php?r=post/show&id=1&title=A+Test+Post

このセクションでは、これらの URL を見栄えの良い SEO フレンドリーなものにする方法を説明します。 目的は、アプリケーションで以下のような URL を使うことが出来るようにすることです:

  1. /index.php/posts/yii: yii というタグを持つ記事の一覧を表示するページに導きます。
  2. /index.php/post/2/A+Test+Post: ID が 2 であり、タイトルが A Test Post である記事の詳細を表示するページに導きます。
  3. /index.php/post/update?id=1: ID が 1 である記事の更新を許可するページに導きます。

第二の URL の形式においては、URL に記事のタイトルを含めていることに着目して下さい。 これは主として URL を SEO フレンドリーにするためのものです。検索エンジンは、インデックス作成時に URL に含まれている単語も参照することがあると言われています。

目的を達するためには、アプリケーション初期構成 を下記のように修正します。

return array(
    ......
    'components'=>array(
        ......
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                'post/<id:\d+>/<title:.*?>'=>'post/view',
                'posts/<tag:.*?>'=>'post/index',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
    ),
);

上記において、urlManager コンポーネントの構成を変更し、urlFormat プロパティを path に設定し、一連の rules を追加しています。

urlManager はこの規則を使用して、私たちが希望する形式の URL を解釈し、かつ、生成します。例えば、第二の規則は、/index.php/posts/yii という URL が要求されたときには、urlManager がその要求を post/index というルート (route) に送出し、yii という値を持つ tag という GET 引数を生成することを述べています。また一方では、post/index というルートと tag という引数で URL を生成する場合にも、urlManager コンポーネントはこの規則を使用して、私たちが希望する /index.php/posts/yii という URL を生成します。このような訳ですから、私たちは urlManager は双方向の URL マネージャであると言います。

urlManager コンポーネントは、URL から index.php を見えなくしたり、.html のような拡張子を URL に追加したりして、URL の見栄えを更に良くすることが出来ます。これらの機能は、アプリケーション初期構成の中で urlManager のさまざまなプロパティを構成することで、簡単に手に入れることが出来ます。詳細については、ガイド を参照して下さい。

$Id$

Be the first person to leave a comment

Please to leave your comment.