Codeigniter - 404 页面未找到

Posted

技术标签:

【中文标题】Codeigniter - 404 页面未找到【英文标题】:Codeigniter - 404 Page Not Found 【发布时间】:2015-07-28 22:16:09 【问题描述】:

我正在使用 Codeigniter。一切都很好,直到我创建名为 user_authentication.php 的新控制器(位于http://localhost/etalasekursusci/index.php/user_authentication)。当我尝试打开这个控制器时,浏览器说“404 Page Not Found. The page you request was not found”。我在http://localhost/etalasekursusci/index.php/controller 和http://localhost/etalasekursusci/index.php/user 上的控制器文件工作正常,只是这个失败了。

(仅供参考,我从朋友那里复制了 user_authentication.php 文件。如果我将用户类中的脚本复制到 user_authentication 类,则可以访问 user_authentication.php...)

/application/.htaccess 文件:

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

/application/config/config.php 文件:

$config['base_url'] = 'http://localhost/etalasekursusci/';

/application/config/routes.php 文件:

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

/application/controllers/user.php 文件(可访问):

<?php
class user extends CI_Controller 
public function __construct()

    parent::__construct();

    $this->load->model('user_model');


public function index()

    $this->load->library('form_validation');

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    $this->form_validation->set_rules('nama', 'Nama Kursus', 'required|min_length[5]|max_length[20]');

    $this->form_validation->set_rules('alamat', 'Alamat Kursus', 'required|min_length[5]|max_length[40]');

    if ($this->form_validation->run() == FALSE)
    
        $this->load->view('register_user');
    
    else
    
        $data = array(
        'lembaga' => $this->input->post('nama'),
        'alamat' => $this->input->post('alamat'),
        'paketkursus' => $this->input->post('paket'),
        'lokasi' => $this->input->post('lokasi'),
        'harga' => $this->input->post('biaya')
        );

        $this->user_model->insert_userinfo($data);

        $this->load->view('tambahberhasil');

    


/application/controllers/user_authentication.php 文件(无法访问):

<?php
class user_authentication extends CI_Controller 

public function __construct() 
parent::__construct();


$this->load->helper('form');


$this->load->library('form_validation');


$this->load->library('session');


$this->load->model('login_database');




public function user_login_show() 
$this->load->view('login_form');


public function user_registration_show() 
$this->load->view('registration_form');


public function new_user_registration() 

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

$this->form_validation->set_rules('name', 'Name', 'required|min_length[5]|max_length[20]');

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[40]');

$this->form_validation->set_rules('email_value', 'Email', 'required|min_length[2]|max_length[50]');

$this->form_validation->set_rules('password', 'Password', 'required|min_length[6]|max_length[10]');

if ($this->form_validation->run() == FALSE) 
$this->load->view('registration_form');
 else 
$data = array(
'name' => $this->input->post('name'),
'user_name' => $this->input->post('username'),
'user_email' => $this->input->post('email_value'),
'user_password' => $this->input->post('password')
);
$result = $this->login_database->registration_insert($data) ;
if ($result == TRUE) 
$data['message_display'] = 'Registrasi Berhasil !';
$this->load->view('login_form', $data);
 else 
$data['message_display'] = 'Username yang ada inputkan sudah ada!';
$this->load->view('registration_form', $data);





public function user_login_process() 

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[20]');

$this->form_validation->set_rules('password', 'Password', 'required|min_length[5]|max_length[40]');

if ($this->form_validation->run() == FALSE) 
$this->load->view('login_form');
 else 
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->login_database->login($data);
if($result == TRUE)
$sess_array = array(
'username' => $this->input->post('username')
);

$this->session->set_userdata('logged_in', $sess_array);
$result = $this->login_database->read_user_information($sess_array);
if($result != false)
$data = array(
'name' =>$result[0]->name,
'username' =>$result[0]->user_name,
'email' =>$result[0]->user_email,
'password' =>$result[0]->user_password
);
$this->load->view('admin_page', $data);

else
$data = array(
'error_message' => 'Nama atau Password yang anda masukan salah !'
);
$this->load->view('login_form', $data);





public function logout() 

$sess_array = array(
'username' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
$data['message_display'] = 'Anda sudah Log Out !';
$this->load->view('login_form', $data);



有什么想法吗?

(仅供参考,我从朋友那里复制了 user_authentication.php 文件。如果我将用户类中的脚本复制到 user_authentication 类,则可以访问 user_authentication.php...)

【问题讨论】:

看来你需要配置你的路由,查看 CI 文档 (codeigniter.com/userguide2/general/routing.html) 发布您在主文件夹etalasekursusci 中的.htaccess 文件以及您使用的是什么版本的codeigniter? 您使用的是哪个版本的 Codeigniter? 这个问题被问了很多时间。你在谷歌上搜索过吗? 我的 etalasekursusci 主文件夹中没有 .htaccess 文件。我正在使用 Codeigniter 3.0 版 【参考方案1】:

由于您已将基本 url 定义为

$config['base_url'] = 'http://localhost/etalasekursusci/';

请尝试不带 index.php 的 url http://localhost/etalasekursusci/user_authentication

或使用 index.php 在配置中定义 base_url,如下所示

$config['base_url'] = 'http://localhost/etalasekursusci/index.php';

如果可以,请发布控制器代码。

【讨论】:

根据此处的文档,基本 url 不应在末尾附加 index.php:ellislab.com/codeigniter/user-guide/helpers/url_helper.html 其目的是使您能够创建指向静态资源(例如图像或样式表)的链接。跨度> 【参考方案2】:

在 Codeigniter 3 中,您的类名必须以大写字母开头,文件名也应如此。

您应该尝试将 user_authentication.php 重命名为 User_authentication.php 并将开头的行更改为:

<?php
class User_authentication extends CI_Controller 

同样,user.php 应更改为 User.php,其开头行为:

<?php
class User extends CI_Controller 

可以在here找到解释这一点的类文档

【讨论】:

以上是关于Codeigniter - 404 页面未找到的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 codeigniter 中的分页不起作用? (404 未找到)

如何将不存在的数据页面重定向到 Codeigniter 中未找到的页面?

只有主页显示所有其他页面在 xampp codeigniter 中显示错误 404

Codeigniter 404 Page Not Found 找不到您请求的页面

无缘无故找不到Codeigniter 404页面

CodeIgniter 404 未找到控制器