The change to $config['index_page']
was right, but you need 1 more thing to do:
You have to use an .htaccess
file in your codeigniter root directory that redericts all calls to the index.php
file without the need to have index.php
in the url bar
My file looks like this:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Enforce www
# If you have subdomains, you can add them to
# the list using the "|" (OR) regex operator
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
RewriteRule ^(.*)$ http://www.YOURSITE.COM/$1 [L,R=301]
# Enforce NO www
#RewriteCond %{HTTP_HOST} ^www [NC]
#RewriteRule ^(.*)$ http://YOURSITE.COM/$1 [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# Without mod_rewrite, route 404's to the front controller
ErrorDocument 404 /index.php
</IfModule>
This file also redericts all non www calls ( like YOURSITE.com
to www.YOURSITE.com
. You can also do it the other way, then you have to comment the parts ( with an #
) and uncommend the part below it.
Also it makes the urls better (canocalized URL). if you take a look at the following URLS:
/category
/category/index
/category/index/
That are 3 url's for the same function in the same controller. With the .htaccess
provided above, the url will be
/category
Another important thing to note: for controllers with an index
method which take any sort of parameter, these URLs will still work as such:
/welcome/index/123
/category/index/123