我是CodeIgniter的新手,我的路由配置存在一些问题。
如果我访问一个页面应该是
,一切正常http://localhost/index.php/class/controller
但是如果我添加一些随机参数
http://localhost/index.php/class/controller/randomStuff
它显示没有CSS或JS的页面,但我想显示404错误页面。
这是我的route.php文件
$route['stats'] = 'main/account';
$route['/'] = 'index.php';
$route['/(:any)'] = 'main/disperr'; //Tried this to solve the problem but doesn't work (disperr simply returns show_404())
$route['default_controller'] = 'main';
$route['all'] = 'main';
$route['404_override'] = 'errors/page_missing';
$route['translate_uri_dashes'] = FALSE;
提前感谢您的帮助。
编辑:谢谢你的回答! 在正确地路由页面后,我仍然缺少css问题。 当我使用twig时,我将base_url()作为参数发送到我的视图,并将其添加到我的CSS和JS的路径中。 它现在有效。
答案 0 :(得分:0)
答案 1 :(得分:0)
您必须遵循文档页面中的一些规则。 CodeIgniter安装后找到的路由必须在开头才能找到。
$route['default_controller'] = 'main';//Main class need to have index() method for this works
$route['404_override'] = 'errors/page_missing';
$route['translate_uri_dashes'] = FALSE;
您必须注意优先顺序,因为将按照文件中定义的规则读取规则。
$route['all'] = 'main';
$route['stats'] = 'main/account';
$route['(:any)'] = 'main/disperr'; //Tried this to solve the problem but doesn't work (disperr simply returns show_404())
如果您有(:any)
通配符占位符,则必须位于文件末尾,因为您必须检查所有特定路由不通过(:any)规则,因为该规则对任何路由都有效(作为名称)建议)。不需要斜杠到索引路由,因为斜杠是默认控制器并且已经定义了。路由到index.php
无效,您可能只想路由'controller_name/method_name/param1'
或类似模式。开头不需要斜线,因为你看到我删除了那些。也许从创建路由的开头删除斜杠将解决您的CSS问题,但您需要遵循我在此处公开的其他文档规则。阅读整页here。