【问题标题】:My Custom Routing Is Not Working in Codeigniter 3我的自定义路由在 Codeigniter 3 中不起作用
【发布时间】:2020-01-24 07:14:25
【问题描述】:

您好,我的自定义路由不起作用。当我输入http://localhost/sitename 时,default_controller 路由正在工作,但是当我输入http://localhost/sitename/test 时,浏览器输出是 404 未找到。请帮帮我,谢谢。

$route['default_controller'] = 'Traffic/test';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['test'] = "Traffic/test";

【问题讨论】:

  • 您添加了基本网址?
  • 你为 apache 启用了 rewrite_module 吗?
  • 感谢它的工作,我只需将 .htaccess 替换为正确的

标签: .htaccess codeigniter routing


【解决方案1】:

请在 routes.php 上试试这个代码

$route['default_controller'] = 'welcome';
$route['test'] = 'traffic/test'; 
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

【讨论】:

    【解决方案2】:

    我不得不将我的默认控制器 php 文件重命名为小写,并将控制器类名重命名为小写,一切都开始工作了。 当 CI 查找默认控制器文件时,它会以小写形式搜索文件; 如果我将控制器文件命名为“Traffic/test”而不是“traffic/test”

    $route['default_controller'] = 'traffic/test';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;
    $route['test'] = "traffic/test";
    

    现在上面的代码复制并粘贴你的routes.php

    【讨论】:

      【解决方案3】:

      请注意,$route['default_controller'] 需要一个控制器,而不是控制器/方法对。您需要做的第一件事是将其更改为$route['default_controller'] = 'traffic';

      使用控制器/方法对您可能会取得一些成功,但随着路由复杂性的增加,您将来可能会遇到麻烦。

      另外,正如其他人已经指出的那样,必须遵循 Codeigniter 命名和大小写约定:即使控制器文件名是大写的(即Traffic.php)并且控制器类也是大写的(class Traffic extends CI_Controller),只要您创建一个引用控制器如default_controller 路由,必须全部小写。

      也就是说,您正确的路由配置应该是:

      $route['default_controller'] = 'traffic';
      $route['404_override'] = '';
      $route['translate_uri_dashes'] = FALSE;
      $route['test'] = "traffic/test";
      

      使用此配置:

      【讨论】:

        猜你喜欢
        • 2013-11-04
        • 2016-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        相关资源
        最近更新 更多