codeigniter中的URI重新路由

时间:2010-02-05 15:43:01

标签: php codeigniter

我在CI中使用URI重新路由来制作更好的URL。这里的一个例子是:

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

这里的目的是从URL中删除索引。这很好用。但是它阻止我访问用户控制器中的任何功能,例如

mywebsite.com/users/messages

只需重定向到users/index即可。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

定义您希望保留的方法列表,然后让其余的通配符匹配:

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

答案 1 :(得分:0)

您好我不熟悉CI,但我有类似的路由系统。 (:any)可以作为一种捕获。当我的路由器检查路由规则时,它会停止检查是否找到了完全匹配。那么答案就是在catch all之前添加另一个函数路由。像

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

不确定CI如何处理这个问题,但我可以想到第一个URL部分是类,第二个是函数。即使没有路由表,路由器或控制器模块也应具备启动调用功能的智能。 路由表只应用于“其他可调用名称”的情况,就像我上面使用的消息/ checkmessages一样。

希望能让你前进。