是否可以关闭CodeIgniter中的自动路由,并且只有在存在该请求的路由时才处理请求?感谢。
答案 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
。
class MY_Router extends CI_Router
。您可以覆盖方法_set_routing()
:
此函数根据URI请求以及路由配置文件中设置的任何“路由”确定应该提供的服务。
它应该更复杂,但至少可以引导您进入另一种解决方案。
答案 3 :(得分:-1)
不,就我所知,关闭CodeIgniter中的自动路由约定是不可能的,但您可以在.htaccess文件中放入条目,将默认路由重定向到您创建的路由。