找不到CodeIgniter路由

时间:2018-06-26 09:10:38

标签: php codeigniter routes codeigniter-3

我正在学习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)->页面/索引/ $ 1调试-

     

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

     

pages / index / dashboard调试-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)->页面/索引/ $ 1调试

我发现这很奇怪,因为我已经“硬编码”了路由并将其放置在routes.php的最上端,但是由于某种原因而没有被执行...?

任何输入和/或帮助表示赞赏。

4 个答案:

答案 0 :(得分:0)

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

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

(这意味着路径是controller-> pages-> index.php)只需向您确认即可。

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

将路线更改为:

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

答案 1 :(得分:0)

为简单起见,删除定义的路由,无需在CI中定义路由。如果您拥有控制器“管理员”和操作仪表板,则只需使用URL

进行浏览
  

http://yoursite/admin/dashboard

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

  

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

。 如果您在本地计算机(如XAMP)上,则URL将为

  

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

希望这会有所帮助

答案 2 :(得分:0)

您应在路线文件中删除

$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文件代码将从网址中删除index.php

答案 3 :(得分:-1)

-首先在$ config ['base_url'] ='http://localhost/CryptoCompare/'之类的config文件夹中的config.php文件中设置基本路径。 -然后您可以使用base_url()使用此路径; -之后,您可以使用echo base_url()+'/ admin / dashboard';像这样

或仅在您定义的网址中添加“ /”,然后尝试一下,我认为这会起作用。