Rerouting in CodeIgniter is really simple if you already know how paths work in the framework. You have a controller that is used as the route redirect target. In other words, it picks up the redirected path as its own. Everything other than that is simple CodeIgniter coding. The path can be as many variables large as you may require.
Fairly complex routing systems can be set up this way without the bit of complexity you would have using straight php without a framework. Below is a short and sweet, step by step simple example of how to accomplish a two variable reroute.
Step By Step
First Step is download CodeIgniter from their website.
Second Step is to unzip it into your server root or a subfolder.
Third Step is to create a .htaccess file that tells apache how to handle requests. This step isn’t necessary if you don’t care about index.php being in your paths. My code is installed in a subfolder named ciredir on my Xampp server in Windows:
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /ciredir/index.php/$1 [L] </code>
Fourth Step is to alter the application/config/routes.php file.
</code> $route['default_controller'] = "welcome"; $route['404_override'] = ''; // works if .htaccess removes index.php in path <strong>$route["go2/(:any)"] = "redir/where/$1/$2"; </strong>// if no .htaccess was used you include the index.php in path // ex. http://localhost/index.php/go2/somevar/anothervar
I actually only added the one line to the default routes configuration file. As you can see there are two path variables defined that are used as arguments to the where() function. Below is the code for the Redir controller that acts as the redirect target. It should be located in the application/controllers folder.
redir.php
</code> <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); </code> class Redir extends CI_Controller { public function __construct(){ parent::__construct(); } public function index(){ echo 'DOES NOT work if you are using redirection'; echo 'DOES work if you are going to the controller name (/redir)'; } /** * where * @param $foo * @param $bar * @return nothing * @desc catches the redirection from the altered config/routes.php go2 entry */ public function where($foo, $bar) { // simply echo it out instead of calling a view to // find out what's going on echo ‘$foo = ‘ . $foo; echo '<br/>'; echo ‘$bar = ‘ . $bar; } /* End of file redir.php */ /* Location: ./application/controllers/redir.php */
Finally try it out by going to http://localhost/go2/any/var . Granted, all this code does is echo the variables back out to the screen (very unwise to put on a production server – because a web browser loves to see something it can interpret as something other than plain text). However, you can easily expand on the above code to whatever means you may desire.
What does it all mean?
I thought it was about routing in CodeIgniter but let me know if you see something else there.
Excellent article. I am facing some of these issues as well..
What’s up friends, how is the whole thing, and what you would like to say on the topic of this post,
in my view its genuinely awesome for me.
Oh my goodness! Amazing article dude! Thank you, However
I am experiencing difficulties with your RSS. I don’t know
the reason why I am unable to join it. Is there anybody else getting the same
RSS problems? Anyone who knows the answer will you kindly respond?
Thanks!!