将参数传递给CodeIgniter中的index()

I have the following structure for my application:

myapp/index.php: index page
myapp/mycont/myfunc/productID: dedicated page for product

index.php has links that open up myapp/mycont/myfunc/productID

Hence, the controller functions are defined as:

index() {...}
myfunc($id) {...}

As, both my functions are almost same I wanted to remove the myfunc() function and change the URLs as:

myapp/: index page
myapp/productID: dedicated page for product

Both the above URLs should use index() function, but the index function throws error if I try to pass parameters to it.

Pass parameter to index function in CI:

1) You need the index segment http://www.example.com/search/index/search-keyword.
2) Or you need to use a route $route['search/(:any)'] = 'search/index/$1';
3) Or try remap: https://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping


Edit (sample):

$route['abc/campaigns/add_webengage_feedback_leads'] = "abc/campaigns/add_webengage_feedback_leads";
$route['abc/campaigns/add_webengage_survey_leads'] = "abc/campaigns/add_webengage_survey_leads";
$route['abc/campaigns/add_canvass_data'] = "abc/campaigns/add_canvass_data";
$route['abc/campaigns/add_connecto_data'] = "abc/campaigns/add_connecto_data";
$route['abc/campaigns/(:any)'] = "abc/campaigns/index/$1";

Note: The URL mapping to the index function should be last.

Assuming that you have removed the index.php from your URL, you can go by this flow,

function index(){
    if( $this->uri->segment(3) ){     //if an product id is set
        $id = $this->uri->segment(3); //this is the product id in third segment of URL
    }else{                            //display the normal index page

    }
}