今天要來介紹Codeigniter的路由!(Routes)
一般來說,Codeigniter的URI和Controller(控制器)存在一對一的關係。
我們在Day 5靜態頁面中有提到一般的URI長這樣
http(s)://example.com/(index.php)/<控制器類別Controller-class>/<控制器方法Controller-method>/<參數arguments>
即是
example.com/class/function/id/
不過,有時候你會須要自訂URI,這時候就會需要用到路由
/application/config/routes.php
Codeigniter保留了兩個萬用字元!分別是(:any)
和(:num)
(:num)
將對應到只含有數字的一個片段。 (:any)
將對應到含有任何字元的一個片段(除了 /
)。
Codeignter支援以正則表達式做路由!像是([a-z]+)
或(.+)
有關正則表達式的相關資訊 http://www.regular-expressions.info
$route['journals'] = 'blogs'; //將 /journals 對應到 blogs這個class
$route['product/(:any)'] = 'catalog/product_lookup'; //將 /proudct/<任意字串> 對應到catalog::product_lookup()
$route['product/(:num)'] = 'catalog/product_lookup_by_id/$1'; //將 /proudct/<任意字串> 對應到catalog::product_lookup_by_id($id), $id即為符合`(:num)`的值
$route['proudct/([a-z]+)'] //將 /proudct/<([a-z]+)> 對應到catalog::index($id), $id即為符合`([a-z]+)`的值
限定Request時的HTTP Method (GET, POST, OPTION, DELETE, PUT)等
$route['product']['PUT'] = 'manage_proudct/add'; //當uri為/product且HTTP Request Method為PUT時,對應到manage_proudct::add()
首頁路由
$route['default_controller'] = 'welcome';
404 Not Found路由
$route['404_override'] = '';
設定值:是否將URI中的連字號-
轉為底線_
$route['translate_uri_dashes'] = FALSE;