Search code examples
codeignitercodeigniter-routing

Codeigniter routing using base_url


I am using the Pagination library in Codeigniter, and the links it creates are exactly what I'm looking for. When I click on the link to go to the next page I get a 404.

My base url (index page) is: http://localhost/foo

My routing is:

$route['default_controller'] = 'main';
$route['page/(:num)'] = 'main/page/$1';

I want to be able to go to the url: http://localhost/foo/page/2 to get the second page. main is the controller. page is a function inside main.

I can type in the url http://localhost/foo/index.php/main/page/2 and get to the correct page, but I do not want to have the index.php/main in the url.

What am I doing wrong?


Solution

  • You aren't doing anything wrong. If you want to remove the index.php from the url:

    Leave in blank $config['index_page'] attibute on the application/config/config.php file and make sure that you have a .htaccess that contains

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    Also make sure the apache server has mod_rewrite enabled and in the configuration of apache AllowOverride attribute it's been set to All