CodeIgniter Routing Folder Error
On CodeIgniter 3 It does not allow you to have a sub folder on
$route['default_controller']
you will instead need to create a MY_Router.php file like below.
You will need to create a MY_Router.php in
application > core > MY_Router.php
Here is a MY_Router.php file that should allow you to use $route['default_controller'] = 'public/pubweb';
in Codeigniter 3
<?phpclass MY_Router extends CI_Router { protected function _set_default_controller() { if (empty($this->default_controller)) { show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.'); } // Is the method being specified? if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } // This is what I added, checks if the class is a directory if( is_dir(APPPATH.'controllers/'.$class) ) { // Set the class as the directory $this->set_directory($class); // $method is the class $class = $method; // Re check for slash if method has been set if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; } } if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) { // This will trigger 404 later return; } $this->set_class($class); $this->set_method($method); // Assign routed segments, index starting from 1 $this->uri->rsegments = array( 1 => $class, 2 => $method ); log_message('debug', 'No URI present. Default controller set.'); }}
Make sure your files have first letter upper case on file name and class name. Pubweb.php
and class Pubweb extends CI_Controller {}
Hope this helps!
You can create a new file in the main controllers folder for routing purpose. for example, I have a directory structure like 'controllers/coming/Commingsoon.php'
.if I want to run Commingsoon
as my default controller so i will do this:
create new file in controllers folder: Main_controller.php
:
class Main_controller extends CI_Controller{ public function __construct(){ parent:: __construct(); } public function index(){ redirect('comming'); }}
and in routes.php file:
$route['default_controller'] = 'main_controller';$route['comming'] = 'comming/commingsoon/index';
hope this will help...