0

My app recognizes main page index.php (that calls a controller which name is Home and shows this Home page, as expected).

Although when I call a topic in the menu (which is also a controller), it fails with this error:

HTTP Error 404.0 - Not Found

http://alfa.teste:80/estrutura where

http://alfa.teste/ is the base url and 'estrutura' is the controller.

Please, any help? Thank you so much!

FFS
  • 11
  • 1
  • have you tried http://alfa.teste:80/index.php/estrutura ? if it works then you need htaccess file – danny Jan 31 '18 at 20:43
  • Hi danny, Thank you so much. It works when I tried alfa.teste:80/index.php/estrutura. – FFS Feb 01 '18 at 14:21
  • I´ve already defined base url in config.php and I´ve also defined an index method. My .htaccess may be the problem. – FFS Feb 01 '18 at 14:27

1 Answers1

2

in config.php file put this small code bellow base_url array

$config['base_url'] = ' ';

//try to catch the base url in case of undefined base url 
if (!$config['base_url']) {

    $domain = $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];

    $domain = preg_replace('/index.php.*/', '', $domain);
    if (!empty($_SERVER['HTTPS'])) {
        $config['base_url'] = 'https://' . $domain;
    } else {
        $config['base_url'] = 'http://' . $domain;
    }
}

and in autoload.php file you need to add url in helper array like this:

$autoload['helper'] = array('url');

Your code will work fine if you call base url function

base_url();

If this still not works for you then you need to create an .htaccess file in root folder of the project. write the following code in .htaccess file:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

I hope any of the above solution will work for you.

Sankhnad Mishra
  • 110
  • 1
  • 12
  • That is a spectacularly insecure way to determine and set `$config['base_url']`. Please search and read about the risks of using `$_SERVER['HTTP_HOST']`. All the OP needs is `$config['base_url'] = 'http://alfa.teste/';` – DFriend Feb 01 '18 at 03:40
  • Thank you Sankhnad and DFriend. When I call http://alfa.teste:80/index.php/estrutura it works. I had already defined base url in the config.php as http://alfa.teste. I also using .htaccess as yours above, but, unfortunately, it didn´t work and I am still getting a http error 404 not found – FFS Feb 01 '18 at 14:40
  • DFriend I´ve already used the base url in the config.php. I´ve also defined .htaccess but I am still getting this error. Looking forward to hearing from you anu suggestions, Thank you so much, – FFS Feb 01 '18 at 16:36