2012-03-03 88 views
0

請看看我的笨配置什麼/ routes.php文件文件:codeigniter路由規則 - 我做錯了什麼?

$route['default_controller'] = "primary"; 
$route['404_override'] = ''; 

$route['(:any)']    = 'primary'; 
$route['login']    = 'login'; 
$route['admin']    = "admin"; 
$route['admin/(:any)'] = 'admin/$1'; 

所以,我想幾乎所有的頁面請求定向到我的「主」控制器,它會被照顧的index()函數。有一些例外;登錄去登錄,管理員到管理員。這一切工作正常。問題在於最後一條規則,它似乎並不像它應該那樣工作; 'admin/whatever'只是路由回我的主控制器。爲什麼?

我真的喜歡航線任何管理請求正常,所以管理/不管/管理/不管/管理/不管/不管/管理/不管/不管/ 。可能有許多細分市場,並且有太多列出單獨的規則(作爲第一個$ route ['(:any)'] ='primary'的規則);規則)。有沒有辦法做到這一點?

我對codeigniter相當陌生,所以如果答案顯而易見的話,我很抱歉。我花了最近幾個小時來尋找答案,但找不到任何答案。

回答

2

我太傻了。規則應按優先級順序排列,我在登錄和管理路由之前有一個catchall路由(:any),所以路由總是進入主控制器,並且從未匹配我的其他路由,因爲它首先匹配。

路由也應按照段數排序,因此'admin /(:any)'應該在'admin'之前。在規則'admin /(:any)'中,似乎可以引用(:any)任意數量的後續段。

我現在有:

$route['admin/(:any)']   = 'admin/$1'; 
$route['login/(:any)']   = 'login/$1'; 
$route['login']      = 'login'; 
$route['admin']      = "admin"; 
$route['(:any)']     = 'primary'; 

,它工作正常。

0

除非你想重寫管理員/任何別的東西,否則刪除最後一個規則和admin /什麼應該去管理/不管,如果您有任何功能在管理控制器