Search code examples
.htaccesscodeigniterroutescodeigniter-2codeigniter-routing

CodeIgniter 2.1.4 - Routing don't work in server


I know there are many issues like this but I applied everything and I don't find the correct way to do it.

The .htaccess is :

RewriteEngine On 
RewriteBase /NewWebsite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /NewWebsite/error.php
</IfModule>

In config/config.php :

$config['base_url'] = 'https://mydomain.com/NewWebsite/';  
$config['index_page'] = ''; 
$config['uri_protocol'] = 'AUTO'; // I change it with REQUEST_URI and PATH_INFO but it don't work

In server, mod_rewrite is enabled.

In localhost, everything is ok but when i uploaded it to the server, only index works (the first page that you see) but when I want to "move" around the web, i have 404 error, page not found.

I am going to show one controller and how I call it to change to another views.

class Products_controller extends CI_Controller {
    public function index()
    {
        $this->load->helper('url');
        $this->load->helper('html');
        $this->load->view('products.php');
    }
}

And from index, I call it:

echo base_url('Products_controller/index');

OR

echo base_url('Products'); // I have in config/routes.php ---> $route['Products'] = "Products_controller/index";

Anyone can help me? What am I missing ?

Thanks.


Solution

  • And finally, I got a solution about this topic.It was not about a .htaccess problem, was a really dump and simple mistake.

    In CodeIgniter, the name of the controllers and the name of the file have to have exactly the same name. I have been defining my controllers with the first letter capitalized and not in the file name. And now it is everything ok !

    Thank you guys.