CodeIgniter の URL
CodeIgniter のデフォルトのURLは、検索エンジンにも人間にもわかりやすいように設計されています。動的システムの代名詞といえる一般的な"クエリ文字列"アプローチを採用する代わりに、CodeIgniter では次のような セグメントベースアプローチを採用しています:
example.com/news/article/my_article
Note: 後述するように、クエリ文字列をURLで使用することもできます。
URI セグメント
Model-View-Controllerアプローチに従うと、URLの中では、セグメントは大抵次のように表現されます:
example.com/class/function/ID
- 最初のセグメントは呼び出すべきコントローラクラス をあらわします。
- 2番目のセグメントは、クラスの呼び出されるべき関数またはメソッドをあらわします。
- 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を自分で組み立てる必要があります。