Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

000webhost and codeigniter

Im trying to use codeigniter in a shared server at 000webhost. I uploaded the content of the pack and if I enter

http://groceriesapi.000webhostapp.com/API/index.php/welcome/

it does indeed work. But if I visit:

http://groceriesapi.000webhostapp.com/API/welcome/

you get a 404.

I read in the internet that one should solve this issue with .htaccess file. First off, I have two of them in my folder structure. This is how it looks like:

public_htm
    application
       plenty of things
       .htaccess
    other stuff
    .htaccess

I edit the outer .htacces, the one at public_html to look like this:

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

and now when visiting the simplified URL (http://groceriesapi.000webhostapp.com/API/welcome/) I get a 500 Internal server error!

Any clue ???

PS: I would not care about the index.php in the middle of the URL but whenever I get an error message the whole codeigniter blows up and I don't know what went wrong .. and that's a problem :(

like image 989
javirs Avatar asked Jul 19 '19 14:07

javirs


1 Answers

Step:-1 Open the folder “application/config” and open the file “config.php“. find and replace the below code in config.php file.

//find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""

Step:-2 Go to your CodeIgniter folder and create .htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

Step:-3 Write below code in .htaccess file

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

Step:-4 In some case the default setting for uri_protocol does not work properly. To solve this problem just open the file “application/config/config.php“, then find and replace the below code

//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

Thats all but in wamp server it does not work because rewrite_module by default disabled so we have need to enable it. for this do the following

  1. Left click WAMP icon
  2. Apache
  3. Apache Modules
  4. Left click rewrite_module

Original Documentation

Example Link

PS: This answer is a word to word copy from CodeIgniter removing index.php from url. Only posted here because the question had to be answered as a part of bounty

like image 143
Tarun Lalwani Avatar answered Oct 22 '22 14:10

Tarun Lalwani