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

0

5 Answers 5

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.

Sign up to request clarification or add additional context in comments.

1 Comment

How to check your mod_rewrite is enable or not?- stackoverflow.com/questions/9021425/… How to enable mod_rewrite- stackoverflow.com/questions/869092/…
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

2 Comments

You are welcome. Please mark the answer as accepted, it will help others to see the valid answer straight away
goto: codeigniter user guide (Docs » General Topics » CodeIgniter URLs)
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.

Comments

1

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

" htdocs/codeigniter/.htaccess "

and then put htaccess content

Comments

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.