cytsunny
cytsunny

Reputation: 5030

Removing index.php - official guide not working (code igniter)

I am trying to remove the index.php in the url for Code Igniter. According to the official guide, I should add the following code to the .htaccess file.

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

This is not working.

So I do more searches and some say that I should remove the default configuration on the index page, so I make the changes in the config.php file:

$config['index_page'] = '';

It is still not working. Then, on more searches, I found different version of the code, like this one (there is just an example, I have tried many version already)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

I initially put the code in the .htaccess of the root directory, but as it is not working, I also try adding it to .htaccess in other directory. Yet, still not working.

I am just using the default welcome page for testing, so I am sure it is not the problem of coding. i.e.

http://localhost/projectFolder/CodeIgniter/welcome/

Anybody got idea what have I missed?

Upvotes: 0

Views: 232

Answers (3)

swatkins
swatkins

Reputation: 13640

I'm assuming that whatever folder that http://localhost/projectFolder/CodeIgniter/ maps to is your docroot and that the .htaccess file is inside that directory.

If that is the case, then your code is correct - so it's a matter of your apache config. Make sure that you are allowing .htaccess files by changing the Directory block - AllowOverride All.

Take a look at this page for help doing that.

Upvotes: 1

Jigar Jain
Jigar Jain

Reputation: 1447

Make this changes to config file

 $config['base_url'] = 'http://localhost/projectname/';
 $config['index_page'] = '';

Then in ur .htaccess try

 DirectoryIndex index.php
 RewriteEngine on
 RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico)
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 

Also make sure that you have mod_rewrite enabled in your apache configuration

The .htaccess file should be in root directory of your project, ie outside application folder

Upvotes: 0

Amit Horakeri
Amit Horakeri

Reputation: 745

I think the following code should work for you

RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|public|themes|captcha|robots|documents|\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]

Hope this helps you.

Upvotes: 0

Related Questions