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'开发者_StackOverflow社区t found. What is the problem?
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
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]
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]
First of all, make sure that you have defined a default controller. Then make sure that you construct URLs in such a way that there is a controller associated with them. For example,
Home page:
example.com/home/
Or for the About us page:
example.com/about/
Also double check that you have turned on the mod-rewrite module.
I also had this problem and found that Shane's answer helped me out. I have my sites setup in WAMP.
RewriteBase /mysite/
The mysite
is the alias as set in Apache. This worked for all my sites.
.htacess
RewriteEngine on
#Any HTTP request other than those for index.php,
#assets folder, files folder and robots.txt
#is treated as a request for your index.php file.
RewriteCond $1 !^(index\.php|assets|files|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
after this go to application/config/config.php
and modify these two variables with the values mentioned below.
$config['base_url'] = '';
and
$config['index_page'] = '';
For all my Codeigniter projects, I use .htaccess code below:
RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
I hope this helps.
精彩评论