URI 表記形式について

アプリケーションが GET パラメータを識別する時の URI 表記形式を定義することが可能です。

例えば、hoge.index モジュールに、次の GET パラメータを渡すとします。

userid = 123
name   = fuga
age    = 25

この場合、通常であれば下記の URI 表記になりますが、

http://example.com/hoge?userid=123&name=fuga&age=25

設定を行うことで、下記のように静的 URL 風に見せることが可能です。

http://example.com/hoge-userid-123/name-fuga/age-25/

上記では、クエスチョン(?)をハイフン(-)に、イコール(=)をハイフン(-)に、アンバサンド(&)をスラッシュ(/)に変更しています。

上記の「静的 URL 風の設定」は、デフォルトで設定された状態になっています。

URI 表記形式の設定

URI 表記形式の設定は、app.env.php の Lambda::setEnv メソッドで行います。
メソッドの引数 uri_notation が設定対象になります。

Lambda/apps/<APP_DIR>/app.env.php

1
2
3
4
5
6
7
8
9
10
11
12
Lambda::setEnv(array(

    :

    /**
     * uri_notation
     */

    'uri_notation' => Lambda::URI_REWRITE_HYBRID,

    :

));

uri_notation に設定可能な値は、以下の4つになります。

Lambda::URI_NORMAL
Lambda::URI_REWRITE_STATIC
Lambda::URI_REWRITE_DYNAMIC
Lambda::URI_REWRITE_HYBRID

それぞれの意味は、以下を参照してください。

設定値 Lambda::URI_NORMAL
URI 表記例 http://example.com/index.php/hoge?userid=123&name=fuga&age=25
説明 「uri_notation」を定義しない場合のデフォルトのモードです。
.htaccess の rewrite が使えない(使いたくない)場合に指定してください。
URI 表記が PATH_INFO 形式で、あまり見慣れない形式ということもあり、推奨されません。
設定値 Lambda::URI_REWRITE_STATIC
URI 表記例 http://example.com/hoge-userid-123/name-fuga/age-25/
説明 パラメータを静的 URI にマッピングすることができる「静的モード」です。

デフォルトでは、以下に準じて文字の割り当てを変更しています。

? クエスチョン ⇒ - ハイフン
= イコール ⇒ - ハイフン
& アンバサンド ⇒ / スラッシュ

割り当てを変更したい場合は、Lambda::setEnv メソッドで行います。

1
2
3
4
5
6
7
8
9
10
11
Lambda::setEnv(array(

    :

    'uri_delim_ques' => '-', // ?
    'uri_delim_eq'   => ':', // =
    'uri_delim_amp'  => '/', // &

    :

));

上記は、クエスチョン(?)をハイフン(-)に、イコール(=)をコロン(:)に、アンバサンド(&)をスラッシュ(/)に変更しています。

上記設定により、下記の URI 表記で GETパラメータの識別が可能になります。

http://example.com/hoge-userid:123/name:fuga/age:25/

[変更時の注意点]

  • uri_delim_eq にスラッシュ(/)を割り当てることはできません。
  • uri_delim_eq と uri_delim_amp を同じ文字にすることはできません。
  • パラメータ名と値に出現する文字を割り当てることはできません。
設定値 Lambda::URI_REWRITE_DYNAMIC
URI 表記例 http://example.com/hoge?userid=123&name=fuga&age=25
説明 世間一般に良く知られている、動的にページを生成する URI 表記です。
「動的モード」と呼びます。
特に URI 表記にこだわらない場合は、このモードで何ら問題はありません。
設定値 Lambda::URI_REWRITE_HYBRID
URI 表記例
http://example.com/hoge-userid-123/name-fuga/age-25/
http://example.com/hoge?userid=123&name=fuga&age=25
説明 前述の「静的モード」と「動的モード」をどちらも利用できる「ハイブリッドモード」です。
柔軟な対応が可能になりますので、一番推奨されるモードです。