How to route cutom URL with to custom controller in CodeIgniter? How to route cutom URL with to custom controller in CodeIgniter? codeigniter codeigniter

How to route cutom URL with to custom controller in CodeIgniter?


You have to read the this page from the official documentation of codeigniter. It covers all related things to Routing URLs easily. All routes must be configured via the file:

application/config/routes.php

It could be something like this :

$route['user/(:any)'] = "user/user_detail/$1";


This can be achieved by overriding CI_Controller class BUT dont change the original core files, like I said override the controller and put your logic in it.

Help: https://ellislab.com/codeigniter/user-guide/general/core_classes.html

how to create Codeigniter route that doesn't override the other controller routes?

Perhaps an easier solution would be to route it with the help of apache mod_rewrite in .htaccess

Here is an detailed explanation on how to achieve it: http://www.web-and-development.com/codeigniter-remove-index-php-minimize-url/


Hatem's answer (using the route config) is easier and cleaner, but pointing the usage of the _remap() function maybe helpful in some cases:

inside the CI_Controller, the _remap() function will be executed on each call to the controller to decide which method to use. and there you can check if the method exist, or use some defined method. in your case:

application/controllers/User.php

class User extends CI_Controller {    public function _remap($method, $params = array())    {        if (method_exists(__CLASS__, $method)) {            $this->$method($params);        } else {            array_unshift($params, $method);            $this->user_detail($params);        }    }    public function user_detail($params) {        $username = $params[0];        echo 'username: ' . $username;    }    public function another_func() {        echo "another function body!";    }}

this will result:

http://www.example.com/user/user_detail/john => 'username: john' http://www.example.com/user/mike ........... => 'username: mike' http://www.example.com/user/another_func ... => 'another function body!'

but it's not going to work with: http://www.example.com/mike , since the controller -even if it's the default controller- is not called at all, in this case, CI default behaviour is to look for a controller called mike and if it's not found it will throws 404 error.

for more:

Codeigniter userguide 3: Controllers: Remapping Method Calls

Redirect to default method if CodeIgniter method doesn't exists.