Search code examples
php.htaccesshttp-redirectcodeigniter-2

redirecting to codeigniter controller using htaccess


This is the url

http://rapidsurfing.net/visio/xip8yT

My site is developed in codeigniter. So when link this above url I want to go to one controller function. How can I do this using htaccess.

This is my httaccces code

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^p\/(.*)$ page.php?q=$1 [L]
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?admin/index/url=$1 [QSA,L]
</IfModule>

The url have value xip8yT.The admin is the controller name and index is the function in that controller.

But when I paste the url http://rapidsurfing.net/visio/xip8yT in address bar it load 404 not found error. What is the problem or mistake in my code? My default controller is admin.


Solution

  • First make sure you set up your default controller in routes.php file. A complete answer to your question is the way that I worked with CI. CodeIginter itself recommend to use a .htaccess for redirecting all of requests to your index page and your default controller and it's what you did. But I recommend to use this piece of code:

    <IfModule mod_rewrite.c>
    
        RewriteEngine On
        RewriteBase /yourbasefoldername
    
        ### Canonicalize codeigniter URLs
    
        # If your default controller is something other than
        # "welcome" you should probably change this
        RewriteRule ^(yourdefaultcontrollername(/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://localhost/dfgamez/$1 [L,R=301]
    
        # Enforce NO www
        # RewriteCond %{HTTP_HOST} ^www [NC]
        # RewriteRule ^(.*)$ http://localhost/dfgamez/$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>
    

    Simply you'll get every slashes after the site address to your index function parameters.

    Peace Out!