0

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

myurl/mycontroller/myaction

由操作处理,myaction但任何其他网址如

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

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

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

这里所有的 url 都将被处理,user/view除了那些 url 的第二部分是admin, user,setuppages.

4

2 回答 2

0

我相信这是正确的语法

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

你可以在这里验证

编辑

我阅读了您的评论并进行了调整。试一试,看看是否合适。

编辑 2

好吧,既然您只希望确切的单词 myaction 不受伤害,那么可以在单词之后使用 (:any) 或 (\d+) ,因此当数字附加到 myaction 单词时会发生重新路由。我还没有真正测试过它。

于 2011-11-04T14:29:09.863 回答
0

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

$route['myurl/mycontroller/myaction'] = "myurl/mycontroller/myaction";
$route['myurl/mycontroller/abc'] = "myurl/mycontroller/$1";
于 2011-11-04T14:05:28.213 回答