CodeIgniter ユーザガイド 日本語版 Version 1.6.3


CodeIgniter の URL

CodeIgniter のデフォルトのURLは、検索エンジンにも人間にもわかりやすいように設計されています。動的システムの代名詞といえる一般的な"クエリ文字列"アプローチを採用する代わりに、CodeIgniter では次のような セグメントベースアプローチを採用しています:

example.com/news/article/my_article

Note: 後述するように、クエリ文字列をURLで使用することもできます。

URI セグメント

Model-View-Controllerアプローチに従うと、URLの中では、セグメントは大抵次のように表現されます:

example.com/class/function/ID
  1. 最初のセグメントは呼び出すべきコントローラクラス をあらわします。
  2. 2番目のセグメントは、クラスの呼び出されるべき関数またはメソッドをあらわします。
  3. 3番目以降のセグメントは、コントローラに渡されるIDなどの値をあらわします。

URI クラスURL ヘルパ にはURIデータを簡単に扱うためのメソッドが用意されています。さらに、URI ルーティング 機能を用いれば、より柔軟にURLを再マッピングすることができます。

index.php ファイルをURLから除去する

初期状態では、index.php ファイルがURLの中に含まれる格好になっています:

example.com/index.php/news/article/my_article

単純なルールを記述した.htaccess ファイルを使えば、簡単にこれを取り除くことができます。特定の項目を除くすべてがリダイレクトされるという、「除外」ルールを用いた方法を使ったファイルの例です:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

上の例では、index.php、images、およびrobots.txt 以外のあらゆるHTTPリクエストはindex.phpファイルへのリクエストとして取り扱われます。

URLサフィックス(接尾辞)の追加

config/config.php ファイルの中で、CodeIgniterで生成されるすべてのURLに付加されるサフィックス(接尾辞)を指定することができます。 たとえば、URLが次のようなものだったとき:

example.com/index.php/products/view/shoes

ページを何かの種類に見せかけるために、オプションで.html などのサフィックスを追加することができます:

example.com/index.php/products/view/shoes.html

クエリ文字列の有効化

URLに次のようなクエリ文字列を使用したい場面もあると思います:

index.php?c=products&m=view&id=345

CodeIgniter ではオプションでこのようなことにも対応しています。この機能は、application/config.php ファイルで有効にすることができます。設定ファイルを開くと次のような項目があると思います:

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

"enable_query_strings" を TRUE に変更すると、この機能が有効になります。次の例のように、コントローラとメソッドを呼び出すために "トリガ(trigger)"に指定した語句[ 訳注:この例では、「c」と「m」。上の設定の$config['controller_trigger']などのところで指定している語句 ]を使ってコントローラとメソッドにアクセスします:

index.php?c=controller&m=method

Please note: クエリ文字列を使用している場合は、セグメントベースのURLで機能するように設計されているURLヘルパ(それと、FormヘルパなどのURLを生成するヘルパ)で便利に利用できる機能が使えないので、かわりにURLを自分で組み立てる必要があります。