【问题标题】:CodeIgniter Route Not Found未找到 CodeIgniter 路由
【发布时间】:2018-12-04 22:47:30
【问题描述】:

我正在学习 CodeIgniter,因此我对这个平台还是很陌生。我有以下问题:

我创建了一个名为 admin 的控制器;

然后我在路由文件中添加了这样的路径:

$route[admin/dashboard] = 'admin/dashboard;

控制器

class Admin extends CI_Controller {

    public function dashboard($page ='dashboard'){

        if(!file_exists(APPPATH.'/views/pages/'.$page.'.php')){
            echo 'error';
            show_404();
        }
        //check if Admin
        $data['isAdmin'] = $this->admin_model->isAdmin($this->session->userID);
        var_dump($data['isAdmin']);
        $data['title'] = $page;
        $this->load->view('templates/header', $data);
        $this->load->view('pages/'.$page, $data);
        $this->load->view('templates/footer', $data);
    }

routes.php

  #ADMIN

    $route['admin/dashboard'] = 'admin/dashboard'; //ROUTE FOR ADMIN DASHBOARD

    #USERS
    $route['users']= 'users';
    $route['users/index'] = 'users/index';
    $route['users/login'] ='users/login';
    $route['users/dashboard'] ='users/dashboard';
    $route['users/profile'] = 'users/profile';
    $route['users/userpicks/(:any)'] = 'users/userpicks/$1';

    #PAGES
    $route['pages/index'] = 'pages/index';
    $route['pages/user_data_submit'] = 'pages/user_data_submit';
    $route['(:any)'] = 'pages/index/$1';
    $route['default_controller'] = 'pages/index';

观看次数

admin
 ------- dashboard.php

Config.php

$config['base_url'] = 'http://mysite';

问题/问题

当我尝试访问 http://mysite/admin/dashboard 时出现 404 错误

跟踪路线会出现以下我觉得奇怪的问题。看下面我相信问题出在routes.php的配置上...?

调试 - 2018-06-26 08:53:45 --> 启用 UTF-8 支持调试 -

2018-06-26 08:53:45 --> 客户端发送:仪表板调试 - 2018-06-26

08:53:45 --> 找到路由:(:any) --> pages/index/$1 DEBUG -

2018-06-26 08:53:45 --> 重定向到:仪表板 -->

pages/index/dashboard DEBUG - 2018-06-26 08:53:45 --> 全球 POST,GET

和 COOKIE 数据净化 DEBUG - 2018-06-26 08:53:45 --> 会议:

“sess_save_path”为空;使用来自

的“session.save_path”值

php.ini。错误 - 2018-06-26 08:53:45 --> 404 页面未找到:

通过查看上面的http://mysite/admin/dashboard 以某种方式被重定向到

找到路由:(:any) --> pages/index/$1 DEBUG

我觉得这很奇怪,因为我已经“硬编码”了路线并将其放在 routes.php 的最顶部,但由于某种原因它没有被执行...?

任何意见和/或帮助表示赞赏。

【问题讨论】:

  • http://mysite/index.php/admin/dashboard ??
  • $config['base_url'] = 'http://mysite;
  • 不只是在 URL 中输入并检查页面加载
  • @TimothyCoetzee 嘿评论这个$route['(:any)'] = 'pages/index/$1'; route
  • 是的@AbdullaNilam 似乎是正确的$route['(:any)'] = 'pages/index/$1'; 路线在$route['admin/dashboard'] = 'admin/dashboard' 之前命中

标签: php codeigniter routes codeigniter-3


【解决方案1】:
  $route['admin'] = "admin/dashboard";

    $route['default_controller'] = "pages/index"; 

(表示路径是controller->pages->index.php) 给你确认就好了。

还有一种情况可能是由于 htacess.php 文件

将路线改为:

http://mysite/index.php/admin/dashboard

【讨论】:

    【解决方案2】:

    为简单起见,删除您定义的路由,无需在 CI 中定义路由。如果您有一个控制器“管理员”和一个操作仪表板,您可以简单地使用 URL 浏览它

    http://yoursite/admin/dashboard

    。如果您没有明确删除 index.php,则 URL 将为

    http://yoursite/index.php/admin/dashboard

    。 如果你在像 XAMP 这样的本地机器上,那么 URL 将是

    http://localhost/folderName//index.php/admin/dashboard

    .

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      在你的路由文件中你应该删除

      $config['index_page'] = 'index.php';
        To 
      $config['index_page'] = '';
      

      .htaccess 文件

      并在您的项目根文件夹中创建一个 .htaccess 文件

      <IfModule mod_rewrite.c>
         RewriteEngine On
         RewriteCond %{REQUEST_FILENAME} !-f
         RewriteCond %{REQUEST_FILENAME} !-d
         RewriteRule ^(.*)$ index.php/$1 [L]
      </IfModule>
      

      这个 .htaccess 文件代码将从 url 中删除 index.php

      【讨论】:

      • 我的$config['index_page'] = '';已按照您的建议设置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2012-10-04
      • 2017-09-29
      • 2019-03-21
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多