我的自定义路由在代码点火器 3 中不起作用



嗨,我的自定义路由不起作用。当我键入 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";

请在路线上尝试此代码.php

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

我不得不将默认的控制器 php 文件重命名为小写,将控制器类名称重命名为小写,一切开始工作。 当 CI 查找默认控制器文件时,它会以小写形式搜索该文件; 如果我将控制器文件命名为"流量/测试"而不是"流量/测试">

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

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

请注意,$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";

使用此配置:

  • 浏览到example.com将加载 https://example.com/traffic/index
  • 浏览到example.com/test将加载 https://example.com/traffic/test
  • 浏览到任何其他 URI 将尝试根据标准 Codeigniter 路由加载控制器/方法对(即,example.com/something/trial 将加载前者中的something控制器和trial方法(

相关内容

  • 没有找到相关文章

最新更新