Reputation: 189
I want to call codeigniter controller class function Like this. but this is not working i want remove index.php from URL
With index.php this working well How to Remove index.php from url ?
I changed
$config['index_page'] = 'index.php';
To
$config['index_page'] = '';
but it's not worked
Upvotes: 0
Views: 20872
Reputation: 139
Create the htaccess file in the below location if you are using xampp
" htdocs/codeigniter/.htaccess "
and then put htaccess content
Upvotes: 1
Reputation: 623
You have to do two job to remove the index.php from the URL.
1st Job -
changed the config file
$config['index_page'] = 'index.php';
To
$config['index_page'] = '';
(Which you have already done)
2nd Job -
You have to add a .htaccess file in your root directory and make sure that your php mod_rewrite is enabled.
For more info, please refer the RewriteRule docs.
RewriteEngine on
RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|asset|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
Just try this. Hope it works and let me know whats going on.
Upvotes: 7
Reputation: 63
Add this .htaccess file in your root directory.
RewriteEngine on
RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|asset|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
Try this code. Thanks.
Upvotes: 1
Reputation: 6653
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
Upvotes: 0
Reputation: 3581
Create .htaccess file in your root directory with the following content
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
A nice list of examples using .htaccess can be found here http://www.askapache.com/htaccess/modrewrite-tips-tricks.html
Upvotes: 3