我在CI中使用URI重新路由来制作更好的URL。这里的一个例子是:
$route['users/(:any)'] = "users/index/$1";
这里的目的是从URL中删除索引。这很好用。但是它阻止我访问用户控制器中的任何功能,例如
mywebsite.com/users/messages
只需重定向到users/index
即可。有办法解决这个问题吗?
答案 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一样。
希望能让你前进。