Nikhil
Nikhil

Reputation: 1450

.htaccess not working - CodeIgniter

I've tried to host a CodeIgniter website in Ubuntu server.

All other websites are working fine without any issues (the sever contains WordPress and Laravel applications). But this particular CodeIngniter website is not taking .htaccess file. I've spend a day to figure out the issue, but no luck.

Here is the details.

Website url structure: http://example.com/website_name

.htaccess file

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

Virtual host entry

<VirtualHost *:80>
    ServerName example.com
    ServerAlias example.com
    DocumentRoot "/var/www/example.com"
    <Directory "/var/wwww/example.com">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride ALL
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

CodeIgniter config file

$config['base_url'] = 'http://example.com/website_name/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

And when I'm trying to access the website the output is as follows,

Not Found
The requested URL /website_name/test was not found on this server.

But if I add index.php, the the website is working without any issues. I've tried lot methods and it doesn't worked.

Upvotes: 3

Views: 2502

Answers (6)

Nikhil
Nikhil

Reputation: 1450

Finally I've figured out the issue by spending an entire day. Here is the solution.

Updated virtual host entry.

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com/

    # Additional section added to get the htaccess working in sub folder.
    Alias /website_name/ /var/www/example.com/website_name/
    <Directory /var/www/example.com/website_name/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Upvotes: 0

Panama Jack
Panama Jack

Reputation: 24448

I have a feeling MultiViews is probably causing some issues.

Change this in your VHOST

Options Indexes FollowSymLinks MultiViews

to this

Options Indexes FollowSymLinks

And also probably add a rewritebase to .htaccess Rewrite

RewriteBase /website_name/

Restart apache for config changes

Upvotes: 1

DFriend
DFriend

Reputation: 8964

Not the ultimate answer but a good way to test if .htaccess is working at any level.

Create this .htaccess and put in root directory

RewriteEngine On
Options +FollowSymLinks
RewriteRule ^test\.html http://www.google.com/? [R=301,L]

Then direct a browser to

http://example.com/test.html

If you end up on Google then you know .htaccess is working.

A useful way to debug .htaccess is to use its logging function. Add this to your vhost's configuration:

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

You'll probably need to restart apache to get logging started.

Upvotes: 0

Niranjan N Raju
Niranjan N Raju

Reputation: 11987

Try changing your .htaccess like this.

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

Or this

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

Upvotes: 0

AldoZumaran
AldoZumaran

Reputation: 572

try this .htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    Options -Indexes
    RewriteEngine On
    RewriteBase /website_name/

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond $1 !^(index\.php)
    RewriteRule ^(.*)$ index.php [L]

</IfModule>

Upvotes: 2

sotoz
sotoz

Reputation: 3098

Add to your .htaccess

RewriteBase /website_name/

after your RewriteEngine on

Upvotes: 1

Related Questions