Codeigniter路由正则表达式 - 匹配除“admin”之外的任何字符串

时间:2012-02-24 10:35:20

标签: regex codeigniter routes

我想将任何与管理路线不匹配的路线发送到我的“事件”控制器。这似乎是一个相当普遍的要求,粗略的搜索引发了各种similar questions

据我所知,解决方案似乎在正则表达式中使用了负面的先行。所以我的尝试看起来像这样:

$route['(?!admin).*'] = "event";

..哪个有效。好吧,有点。它会向我的“事件”控制器发送任何非管理员请求,但是我需要它来传递匹配的实际字符串:所以 / my-new-event / 被路由到 /事件/我的新事件/

我试过了:

$route['(?!admin).*'] = "event/$0";
$route['(?!admin).*'] = "event/$1";
$route['(?!admin)(.*)'] = "event/$0";
$route['(?!admin)(.*)'] = "event/$1";

......以及其他一些越来越随机和绝望的排列。所有结果都是404页。

将匹配的字符串传递给控制器​​的正确语法是什么?

谢谢:)

1 个答案:

答案 0 :(得分:9)

我认为你不能做“负面路由”。

但是由于路线确实有订单:“路线将按照定义的顺序运行。较高的路线总是优先于较低的路线。”我先做一个管理员,然后做其他任何事情。

如果我认为您的管理路径看起来像“/ admin / ...”,我建议:

$route['admin/(:any)'] = "admincontroller/$1";
$route['(:any)'] = "event/$1";