CodeIgniter关闭自动路由?

时间:2012-12-11 09:39:18

标签: php codeigniter

是否可以关闭CodeIgniter中的自动路由,并且只有在存在该请求的路由时才处理请求?感谢。

4 个答案:

答案 0 :(得分:7)

请记住戴尔的解决方案:

$route['(:any)'] = "some/default/controller/$1";

仅适用于单段网址,例如:

example.com/foo

但不适用于:

example.com/foo/bar

您可以使用正则表达式而不是CI通配符来解决此问题。通过路由到不存在的类,确实会删除show_404():

$route['(.*)'] = "none";

答案 1 :(得分:3)

AFAIK你无法关闭CI的自动路由,但有一个解决方法:

// you specific routes
$route['admin/(:any)'] = "admin/$1";
$route['search/(:any)'] = "search/$1";
// the catch all route
$route['(:any)'] = "some/default/controller/$1";

实际上并没有关闭CI的路由,而是将所有不匹配的uri路由到默认控制器。

或者你可以路由到一个不存在的控制器,我相信它会抛出内置的404错误

答案 2 :(得分:1)

好吧,另一个解决方案可以扩展Router

  1. 在/ application / core / MY_Router创建一个类名MY_Route,声明为class MY_Router extends CI_Router
  2. 您可以覆盖方法_set_routing()

      

    此函数根据URI请求以及路由配置文件中设置的任何“路由”确定应该提供的服务。

  3. 它应该更复杂,但至少可以引导您进入另一种解决方案。

答案 3 :(得分:-1)

不,就我所知,关闭CodeIgniter中的自动路由约定是不可能的,但您可以在.htaccess文件中放入条目,将默认路由重定向到您创建的路由。