【问题标题】:CodeIgniter displays page with no css instead of 404CodeIgniter 显示没有 css 而不是 404 的页面
【发布时间】:2016-05-30 09:11:26
【问题描述】:

我是 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 的路径中。 现在可以了。

【问题讨论】:

    标签: codeigniter routing uri


    【解决方案1】:

    您可以使用以下网址

    http://localhost/class/index.php/main

    在 index.php 之后你需要提供你的控制器名称(不是文件夹名称控制器)

    【讨论】:

      【解决方案2】:

      您必须遵循文档页面中的一些规则。 您在安装 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

      【讨论】:

        猜你喜欢
        • 2015-08-14
        • 2019-06-28
        • 1970-01-01
        • 2017-07-02
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        相关资源
        最近更新 更多