PrestonDocks
PrestonDocks

Reputation: 5408

codeigniter rewriting of URLS not working

In the past, I have got this working no problems at all, but for some reason on my new server I just can't get it to work.

I have the following .htaccess file in the root of my application

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

I have also enabled mod_rewrite and have confirmed this with php_info()

my site is located at /var/www/html/test

Is it possible that although mod_rewrite is enabled that it is not working and if so, how can I test it?

Upvotes: 1

Views: 32

Answers (2)

tmarois
tmarois

Reputation: 2470

I use this on my codeigniter setup

RewriteEngine on
# prevent these directories from hitting CI
RewriteCond $1 !^(index\.php|images|assets|robots\.txt|crossdomain\.xml)
# route everything else to the index.php
RewriteRule ^/(.*)$ /index.php/$1 [QSA]

(my setup is done in the virtualhost of .conf and not in .htaccess, though they are usually about the same configuration)

Upvotes: 0

ScottMcGready
ScottMcGready

Reputation: 1622

On some server implementations, you'll need to wrap it within <IfModule> tags.

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

Also check your httpd.conf file to ensure it has:

Options FollowSymLinks
AllowOverride All

It'd also be worth checking to makesure the .htaccess file isn't being overridden by another .htaccess file.

A simple way to test if .htaccess is working

Simply put the following in your .htaccess file:

deny from All

What this does is deny access to your site from everyone. If you are presented with a 403 forbidden when trying to access the site - the .htaccess file is being included. If not - see above.

Upvotes: 1

Related Questions