首页 > 解决方案 > 未找到 Codeigniter 页面 - 迁移到 Live Server

问题描述

我正在将基于 CI 的代码上传到实时网站,但它不断收到错误 404。

网络结构是这样的:

web
  -Application
  -Assets
  -Cache
  -..so on
index.php

这是我的 Application/Config/Routes.php 文件:

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

这是我的 H 控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class H extends CI_Controller {

     function __construct(){
        parent::__construct();
        if(empty($this->session->userdata("userData")['id'])) redirect('/login');

    }

    public function index()
    {
        $data = array();
        if(isset($_GET['guid'])){
            $data['post'] = getListPost($_GET['guid']);
        }else{
            $data['post'] = getStickyPost();
        }
        $this->load->view('partials/header');
        $this->load->view('home',$data);
        $this->load->view('partials/sidebar-home');
        $this->load->view('partials/footer');
    }
    public function materi()
    {
        $this->load->view('partials/header');
        $this->load->view('management/post/lists');
        $this->load->view('partials/footer');
    }
}

这是我的登录控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {
    public function index($slug="")
    {
        if(isset($_POST['username'])){
            $cek = $this->checkLogin($_POST['username'], $_POST['password']);
            if($cek){
                $newdata = array("userData"=>array(
                    'name'  => $cek[0]['nama'],
                    'id'  => $cek[0]['id'],
                    'nip'  => $cek[0]['nip'],
                    'jabatan'  => $cek[0]['jabatan'],
                    'unit_kerja'  => $cek[0]['unit_kerja'],
                    'foto'  => $cek[0]['foto'],
                    'hak_akses'  => ($cek[0]['hak_akses_knowledge_management']=="")?"pengguna":$cek[0]['hak_akses_knowledge_management'],
                    'unit_kerja_atasan'  => $cek[0]['unit_kerja_atasan'],
                    'email'     => $_POST['username'],
                    'logged_in' => TRUE));

                $this->session->set_userdata($newdata);
                redirect('/');
            }else{
                $this->session->set_flashdata('login_status','false'); 
                redirect('/login');
            }   
        }
        // $this->load->view('partials/header');
        // $this->load->view('partials/login');
        // $this->load->view('partials/footer');
        $this->load->view('partials/single_login');
    }

    public function logout(){
        $this->session->sess_destroy();
        redirect('/');
    }

    public function newlogin(){
        $this->load->view('partials/single_login');
    }

    function checkLogin($email,$password){
        $this->db->where("nip",$email);
        $this->db->where("password",$password);
        $query  = $this->db->get("data_pegawai"); 
        return $query->result_array();

    }

}

当我将路由更改为默认路由时,它可以正常工作,但当我返回“H”时,它会不断收到错误 404。

这是视图文件夹的结构:

management
    infografis
    post
    ebook
partials
    header.php
    single_login.php
    footer.php
    sidebar-home.php
    login.php
category
    infografis.php
    ebook.php
errors
home.php
post.php
welcome_message.php

标签: codeigniter

解决方案


即使控制器文件名和类名以大写字符开头,路由也应该是小写的。

所以, H.php,class H extends CI_Controller是正确大写的。但是,$route['default_controller']应该分配一个小写的值。

尝试使用 $route['default_controller'] = 'h';而不是,'H'你应该启动并运行


推荐阅读