How do I remove 'index.php' from URL in CodeIgniter?
How do I remove index.php
from my URL in CodeIgniter?
I removed index.php
from my configuration file, and I have run my rewrite_module
in Apache (2.2.11) and my .htaccess file is:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|captcha|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Now, whenever I click any link, it shows that the URL isn't found. What is the problem?
Solution 1:
Try this out in your .htaccess file: The comments should help get it tweaked in for you...
This works perfectly for me in several CodeIgniter website installations. Also, if mod_rewrite is not installed, it will send you to a 404 page (or you can change that to suite your purpose).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#'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
#This last condition enables access to the images and css folders, and the robots.txt file
RewriteCond $1 !^(index\.php|(.*)\.swf|images|robots\.txt|css|docs|cache)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 /application/errors/404.php
</IfModule>
Check your virtual hosts file and see if you have these items set -- these may allow your .htaccess file to rewrite the URL correctly:
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Solution 2:
This 100% works, I've tried it. Add only the following in your .htaccess file:
RewriteEngine On
RewriteCond $1 !^(index\.php|(.*)\.swf|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
Solution 3:
I also had a problem with the rewrite rule suggested in the CodeIgniter user guide. I solved it by removing the slash from in front of index.php
RewriteRule ^(.*)$ index.php/$1 [L]