CodeIgniterのルーティングからコントローラを取り除く

 

CodeIgniter のようなPHPフレームワークでは、全てのURIへのアクセスをフロントコントローラ(index.php)が受け持つのが一般的です。

フロントコントローラは、リクエストされたパスやクエリ文字によって処理すべきクラスやアクションを決定します。

このような処理の流れを「ルーティング」と言います。

ここではCodeIgniterのルーティング処理やURIについて解説していきます。

CodeIgniterのデフォルトルーティング

CodeIgniterのデフォルトでは以下のようなルーティングが行われています。

このうち、/index.php/部分を削除する方法については、以下の記事をご覧ください。

CodeIgniterの設定【ルーティング、URI】。CodeIgniter のルーティングから /index.php/ を削除する。

デフォルトルーティングは複数コントローラ前提

CodeIgniterのデフォルトルーティングで運用すると、問合せページを「http://example.com/contact/」としたい場合はContact用のコントローラクラスを作る必要が出てきます。

小規模なサイトの場合1つのコントローラで事足りてしまうこともありますので、この挙動を変えてしまいたいところ。

CodeIgniterで全てのアクションを一つのコントローラが受け持つには

そういった場合にはCodeIgniterのルーティングを設定することで、全てのアクションを一つのコントローラにまとめることができます。

ルーティングを制御しているのはconfig内のroute.phpになりますので、CodeIgniterのapplicationディレクトリ内のconfig>route.phpに以下のように変更します。

追記された行は「全てのアクセスをデフォルトコントローラで受け持つ」という設定になります。

この設定により、welcomeコントローラで全てのアクションを受け持つことができ、問合せページを「http://example.com/contact/」としてアクセスしたい場合には、Welcomeクラスにcontactメソッドを実装すれば良いことになります。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。