路由控制器的所有操作,除了codeigniter中的操作

时间:2011-11-04 13:58:51

标签: codeigniter routes action controllers remap

我在CodeIgniter中做一个项目,我想将特定控制器的所有url路由到除一个之外的特定操作。例如, 我想要网址

myurl/mycontroller/myaction

由动作myaction处理,但其他任何网址都是

myurl/mycontroller/myaction1
myurl/mycontroller/myaction2
myurl/mycontroller/myaction3

由特定控制器的操作abc处理。我在互联网上搜索过,我得到的是如何处理除某些控制器之外的某个控制器的所有网址。这样做的方法是

$route['^(?!admin|user|setup|pages).*'] = "user/view/$0";

此处所有网址都由user/view处理,但网址的第2部分为adminusersetuppages的网址除外。

2 个答案:

答案 0 :(得分:0)

我认为路线是按顺序应用的,那么如何在其他路线之前首先为“myaction”添加路线?

$route['myurl/mycontroller/myaction'] = "myurl/mycontroller/myaction";
$route['myurl/mycontroller/abc'] = "myurl/mycontroller/$1";

答案 1 :(得分:0)

我相信这是正确的语法

$route['myurl/mycontroler/myaction(:any)'] = "myurl/controller_a/action";

您可以验证here

修改

我看了你的评论,我做了一个调整。试一试,看看它是否适合。

编辑2

好吧,因为你只想要确切的单词myaction unharmed,然后在单词之后使用(:any)或(\ d +),这样当一个数字附加到myaction单词时就会发生重新路由。我还没有真正测试过它。