Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter - getting 404 Not Found error

We have two hosting packages at godaddy. Our live website is working fine using following .htaccess file. Website is accessible without using index.php in url.

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

We used same htaccess file and same code on other hosting that is also by godaddy. We just wanted to make production and development instances seperate. But on other hosting with same code and htaccess file, website shows 404 page not found error but website works fine with index.php in url.

We have same php version on both server. Just wants to know what could be the issue?

like image 509
Anjum Avatar asked Apr 07 '17 17:04

Anjum


People also ask

How do you fix not found the requested URL was not found on this server?

You may receive a 404 error because the page did not load properly. Refreshing or reloading the webpage may fix the issue. You may refresh the page by clicking the refresh button at the top of your web browser or pressing the F5 button on your keyboard.

What does the requested URL was not found on this server?

A 404 error is an HTTP status code that means the page a user is trying to reach could not be found on the server. The page will not load for the user because it simply no longer exists—it was either removed from the website completely or moved to another location without properly redirecting to a new resource.


1 Answers

I also faced the similar problem when I move my 100% working code to dedicated Debian server. After 3 hours of research, i found out why htaccess file is not working.You need to allow overriding of htaccess in Apache Configuration.

Here are the steps.

Step 1:

Add this in htaccess file

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

Step 2:

Remove index.php in codeigniter config

$config['index_page'] = '';

Step 3:

Allow overriding htaccess in Apache Configuration (Command)

sudo nano /etc/apache2/apache2.conf

and edit the file & change to

AllowOverride All

for www folder

Step 4:

Restart Apache (Command)

sudo /etc/init.d/apache2 restart

Before you make any changes in apache2.conf file make sure to make a backup copy of that file. If you are using Debian server you can avoid sudo command. I believe you know how to connect to your server using ssh client software like putty. Comment below if this method does not work for you.

like image 101
Geordy James Avatar answered Sep 28 '22 09:09

Geordy James