2012.12.29
いやぁCodeIgniterは私のようなプログラム苦手の人でもいろいろ出来るので便利ですね。
今回はURLの調整(ルーティング)について、個人的なメモを書いておきます。
「http://localhost/archive/index/20121229」というURLがあったとします。
URLの中で、indexという文字列部分は冗長なので削除し「http://localhost/archive/20121229」というURLにしたい場合です。
application/config/routes.phpを開き、以下を追加します。
$route['archive/:num'] = archive/index;
:numはセグメントに数字が含む場合を表します。
左のarchive/:numにアクセスしてきた場合に、右のarchive/indexだとみなして処理しなさい、と読みます。
:num(数字)のほかに、:any(文字列)だったり、さらに正規表現も使えたりします。詳しくは公式ドキュメントを見ると分かりやすく書かれています。
例えば以下のようなセグメントを取得する記述をしていた場合、ルーティングの変更によってセグメントの位置が変わるため、数字部分を変える必要がある場合が発生します。
変更したルーティングに関連したセグメントはチェックしておくといいでしょう。
$this->uri->segment(2,0);
標準では、URLがスラッシュで区切られた部分の1つ1つを指します。
http://localhost/archive/index/20121229の場合、以下のようにセグメントを数えます。
もちろんセグメントの数が多くなったり、少なくなったりしたら、それに伴って番号も増えたり減ったりします。