【问题标题】:Custom Routes not working in Codeigniter 3.0.2自定义路由在 Codeigniter 3.0.2 中不起作用
【发布时间】:2016-01-08 20:23:31
【问题描述】:

我的自定义路线有问题!

我的路线代码在 CI3.0.1 中运行良好,但升级到 CI3.0.2 后,我的自定义路线只显示 404! 我的 .htaccess 工作正常,因为我刚刚将 app/config/constants.php 文件和 system/ 文件夹上传到我的主机(如升级文档中所述)

有谁知道,是什么原因造成的?!

url: http://www.example.net url: http://www.example.net/admin 网址:http://www.example.net/admin/index

$route['default_controller'] = 'ctrl_main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['(:any)'] = 'ctrl_main/$1';
$route['main'] = 'ctrl_main';
$route['main/(:any)'] = 'ctrl_main/$1';
$route['main/(:any)/(:num)'] = 'ctrl_main/$1/$2';
$route['main/(:any)/(:any)/(:num)'] = 'ctrl_main/$1/$2/$3';
$route['main/(:any)/(:any)'] = 'ctrl_main/$1/$2';
$route['main/(:any)/(:any)/(:any)/(:num)'] = 'ctrl_main/$1/$2/$3/$4';

$route['admin'] = 'ctrl_admin';
$route['admin/(:any)'] = 'Ctrl_admin/$1';
$route['admin/(:any)/(:num)'] = 'Ctrl_admin/$1/$2';

【问题讨论】:

  • 您是否更改了 htaccess 或 apache 配置/设置
  • 不,我只是使用了用于 CI3.0.1 的 htaccess
  • 您具体做了哪些更改
  • 正是我没有做任何改变!正如在将 CI 文档从 3.0.1 升级到 3.0.2 时所说,我刚刚将新版本的新 config/constants.php 和 system/ 目录上传到我的主机。 route.php 和 .htaccess 文件和之前一样

标签: php codeigniter routes


【解决方案1】:

当你输入http://www.example.net/admin时,它被路由通过

$route['(:any)'] = 'ctrl_main/$1';

所以 CodeIgniter 假定 admin 控制器中有方法 admin

您的路线$route['(:any)'] 永远不会允许以下任何路线。阅读文档中关于路由的 pecedences。您应该将$route['(:any)'] = 'ctrl_main/$1'; 保留在routes.php 文件的末尾。

【讨论】:

  • 是的,正如你所说,但我不明白为什么这段代码在 CI 301 中正常工作
  • 我在不规则中找不到逻辑。我建议的这种方式是一种建议。首先,您不应该将$route['(:any)'] 作为第一条路线。您必须根据文档按优先级对路线进行排序。如果这解决了您的问题,您可以检查答案是否正确。编码愉快。
  • 当然!你的建议很好。请投票支持我的问题;)
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2019-12-10
相关资源
最近更新 更多