0

I want to call codeigniter controller class function Like this. but this is not working i want remove index.php from URL

enter image description here

With index.php this working well How to Remove index.php from url ?

enter image description here

I changed

   $config['index_page'] = 'index.php'; 

To

   $config['index_page'] = '';   

but it's not worked

chathun
  • 169
  • 1
  • 4
  • 12

5 Answers5

7

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.

Community
  • 1
  • 1
Sharif
  • 623
  • 4
  • 12
  • 2
    How to check your mod_rewrite is enable or not?- http://stackoverflow.com/questions/9021425/how-to-check-if-mod-rewrite-is-enabled-in-php How to enable mod_rewrite- http://stackoverflow.com/questions/869092/how-to-enable-mod-rewrite-for-apache-2-2 – Sharif Jul 25 '13 at 08:33
3

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

Vladimir Hraban
  • 3,543
  • 4
  • 26
  • 46
1

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.

Sumanta
  • 63
  • 1
  • 6
1

Create the htaccess file in the below location if you are using xampp

" htdocs/codeigniter/.htaccess "

and then put htaccess content

Sakthikanth
  • 139
  • 7
0

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
Mathlight
  • 6,436
  • 17
  • 62
  • 107