2010-02-05 71 views
0

我在使用URI中的URI重新路由來創建更好的URLS。這裏的一個例子是:在codeigniter中URI重新路由

$route['users/(:any)'] = "users/index/$1"; 

這裏的目的是擺脫URL的索引。這很好。然而,它阻止我從能夠訪問任何功能,在用戶控制器,例如

mywebsite.com/users/messages 

只是重定向到users/index。有沒有解決的辦法?

回答

4

定義的要保留,然後讓剩下的通配符匹配方法的列表:

$route['users/(messages|login|something)'] = "users/$1"; 
$route['users/(:any)'] = "users/index/$1"; 
0

嗨,我是不熟悉的CI,但我有一個類似的路由系統。 (:any)作爲一種捕獲所有。當我的路由器檢查路由規則時,它會停止檢查它是否找到完全匹配。那麼答案就是在全部捕獲之前添加另一個函數路由。像

$route['users']     = "users/index/"; 
$route['users/messages/(:any)'] = "users/checkmessages/$1"; 
$route['users/(:any)']   = "users/$1"; 

不知道CI如何處理這個,但我可以想到的東西像第一個URL部分是類和第二個功能。即使沒有路由表,路由器或控制器模塊也應具備開始調用該功能的智能。 路由表只能用於「其他可調用名稱」的情況下,就像我上面用messages/checkmessages thingy所做的那樣。

希望能讓你走。