CodeIgniter 3.1.7/3.7.1是否支持HMVC?配置后仍404求助
Hey there, let's work through this HMVC problem you're facing with CodeIgniter 3.1.7! First off, a key point to clarify: CodeIgniter 3.x (including 3.1.7) doesn't natively support HMVC—you need to use a third-party extension called Modular Extensions (MX) to get this functionality working. That's likely a big reason your initial setup attempts failed.
Let's break down the fixes for the 404 error you're seeing after following the CI 3.0 tutorial:
1. Ensure You're Using a CI 3-Compatible MX Extension
Don't use an MX version built for older CI 2.x releases—grab the one specifically made for CI 3.x. Once downloaded, place the files correctly:
- Move the
MXfolder into yourapplication/coredirectory - If there's a
Third_partyfolder in the MX package, copy its contents toapplication/third_party - Replace your existing
application/core/Controller.php,application/core/Model.php, andapplication/core/View.phpwith the MX-provided versions (make sure to back up your original files first!)
2. Verify Your config.php Settings
Double-check that you've added the correct module path configuration in application/config/config.php:
$config['modules_locations'] = array( APPPATH.'modules/' => '../modules/', );
Also, confirm that $config['enable_query_strings'] is set to FALSE (this is the default, but if it's enabled, it can break HMVC routing).
3. Check Your Module Directory Structure
Your modules need to follow a strict structure inside application/modules—here's a working example:
application/modules/ └── blog/ ├── controllers/ │ └── Blog.php ├── models/ └── views/ └── index.php
And your controller must extend MX_Controller, not the default CI Controller:
class Blog extends MX_Controller { public function index() { $this->load->view('index'); } }
4. Confirm Your URL Routing
To access your module, use the URL format: http://your-domain.com/module_name (replace module_name with your actual module's folder/controller name). If you're calling a specific method, it would be http://your-domain.com/module_name/method_name.
Also, make sure your $config['base_url'] in config.php is set correctly (no trailing slashes, correct domain).
5. Rule Out Other 404 Causes
- If you're using URL rewriting, check your
.htaccessfile (for Apache) or rewrite rules (for Nginx) to ensure they're properly routing requests to CI'sindex.php. - Verify that your server has rewrite capabilities enabled (mod_rewrite for Apache, rewrite module for Nginx).
- Check file permissions for your module's controllers, models, and views—your web server needs read access to these files.
The CI 3.0 tutorial you followed might have steps that don't translate perfectly to 3.1.7, so sticking to CI 3-specific MX setup steps is crucial.
内容的提问来源于stack exchange,提问作者Vishvendra Singh




