首页 > 解决方案 > codeingter3 HMVC 'default_controller' 不工作

问题描述

我在我的项目中使用 CI3 HMVC。现在,我面临路由问题。我希望用户键入 www.demosite.com,它会自动调用我的主模块。我不想显示像 www.demosite.com/home。我想显示像 www.demo.com 这样的网址。为此,我在 application/config/routes 中设置了默认控制器,如下所示;

$route['default_controller'] = "home";

同样在我的内容模块中,我添加了一个我写的路由文件夹

$route['home'] = 'home';

这是我的 .htaccess

    AddType text/x-component .htc
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond $1 !(index\.php|assets/)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

这是我的家庭控制器

class Home extends MX_Controller{
  function __construct(){
    parent::__construct();

  }

  function index($stub=""){
    $baseUrl=base_url();
    $this->load->helper("url");

      echo $this->_showHomepage();      

  }
}

但是,当我运行它时。我收到 404 错误。我能做些什么来解决这个问题?提前致谢。

标签: phpcodeignitercodeigniter-3hmvc

解决方案


HMVC应该是这样的

这仅采用不允许目录的方法,因此默认控制器位于控制器下

$route['default_controller'] = 'pages/pages/view';

$route['default_controller'] = 'pages';

index 是调用的默认方法。

$route['home'] = 'authentication/home/index';

$route['home'] = 'authentication/home'; 

而且您需要更改 .htaccess 文件以匹配该网址

URI 路由:https ://codeigniter.com/user_guide/general/routing.html#examples

更新 :

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

class Site extends MY_Controller {

    function __construct() {
        parent::__construct();
    }

    function index() {
        $this->load->view('url');
    }

}

推荐阅读