chathun
chathun

Reputation: 189

How to Call codeigniter controller function without url without index

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

Upvotes: 0

Views: 20872

Answers (5)

Sakthikanth
Sakthikanth

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

Sharif
Sharif

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

Sumanta
Sumanta

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

Mathlight
Mathlight

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

Vladimir Hraban
Vladimir Hraban

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

Related Questions