我已经设置了一个带有控制器的文件夹:controllers/admin/home.php
,但是当我尝试访问它时,我从浏览器中获得了404.
这是我的路线档案:
$route['employers'] = "employers/home";
//$route['employers/dash'] = "employers/dash";
$route['default_controller'] = "home";
$route['404_override'] = '';
这是控制器文件:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class home extends CI_Controller {
function __construct(){
parent::__construct();
/*
enable profiler
*/
//$this->output->enable_profiler(TRUE);
$this->load->helper('url');
$this->load->library('ion_auth');
$this->load->library('session');
$this->load->library('form_validation');
$this->load->helper('layout');
}
}
.htaccess
似乎很好。关于我做错了什么想法?
答案 0 :(得分:1)
注意一些事情: 1)路由按照写入的顺序执行,您的自定义路由必须遵循默认路由。所以,它应该是:
$route['default_controller'] = "home";
$route['404_override'] = '';
$route['employers'] = "employers/home";
如果您的控制器“home”位于“雇主”文件夹内。
2)控制器不需要你编写的所有东西,实际上你甚至不需要来调用父构造函数,除非你打算加载库和整个控制器方法的资源(也可以通过在autoload.php文件中自动加载它们来实现),所以它可能只是:
file: application/controllers/employers/home.php
class Home extends CI_Controller {
function index()
{
// this is the method you're calling with your URL!
}
}
3)如上所述,正如@Wesley已经指出的那样,您正在尝试在子文件夹EMPLOYERS中访问控制器HOME的INDEX方法。但你没有定义一个index()方法(如果没有提供其他方法,则默认调用该方法)。 相反,似乎CI正试图寻找雇主控制者和家庭方法;如果它找不到它,但你有一个雇主文件夹,它会尝试访问雇主文件夹中的家庭控制器中的索引方法。并且,既然它没有找到它,你就得到了404页面。
希望我很清楚,否则只是问。
答案 1 :(得分:0)
您没有说出您是如何尝试通过网址访问它的。它应该是:
{YOUR_BASE_URL}admin/home
...后跟可选的网址细分(/method/param1/param2/etc
)。
如果没有其他细分,默认情况下会加载index
方法。但是,由于您没有定义任何方法,因此无需加载。
如果在定义方法后仍然失败,请将控制器文件移出子目录以启动程序,并确保它可以正常工作。