I want to access my URL\'s without index.php
in CodeIgniter. Here is my Blog
controller
class Blog extends CI_Controller {
pub
To remove index.php
create a .htaccess
file in the same folder as your site’s main index.php file.
Then add the following code to this newly created .htaccess file:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
this code have two parts
1 - remove index.php
2 - redirect all site requests to the index file.
in config.php
$config['base_url'] = '';
$config['index_page'] = '';
in .htacess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
finally this is worked fine for me. i have changed .htaccess
file with this content
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /codeigniter
#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]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
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>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
And these changes made
$config['index_page'] = "index.php"
//replace with the below code
$config['index_page'] = ""
$config['base_url'] = "your-project-url";
Create new ".htaccess" file in root directory (not in CodeIgniter's application folder, where there's another htacces file, don't touch that one), with this inside:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Then, find and change this values on config.php (CodeIgniter file, on config folder):
$config['base_url'] = 'localhost/YourProject';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
Finally, on httpd.conf (Apache config file), find:
#LoadModule rewrite_module modules/mod_rewrite.so
and uncomment the line (remove #).
That's it! Now
localhost/myProject/news
works as if I write
localhost/myProject/index.php/news