This article mainly introduces the URL routing summary of the CodeIgniter framework. This article also serves as a Getting Started Tutorial on CodeIgniter routing and explains several aspects of rule configuration. For more information, see the CI framework.
URI routing
Generally, a URI string has a unique controller class/method. Each part of URI is in the following pattern ):
The code is as follows:
Example.com/class/function/id/
However, in some examples, you may want to redirect this relationship to call a different class/function instead of a one-to-one response to the URL ).
For example, you may want your URL to adopt the prototype ):
The code is as follows:
Example.com/product/1/
Example.com/product/2/
Example.com/product/3/
Example.com/product/4/
In general, the second part of the URL represents the method name, but in the above example, it represents the ID of a product. CodeIgniter can implement this function, allowing users to redirect (remap) URI handlers.
Set your own routing rules
The routing rules are defined in the application/config/routes. php file. in this file, you can see an array named $ route, which allows you to define your own routing rules. The following two methods can be used for definition: Wildcard (wildcards) or Regular expression (Regular Expressions)
Wildcard
A typical wildcard routing looks like this:
The code is as follows:
$ Route ['product/(: num) '] = "catalog/product_lookup ";
In a route, the keys of the array contain the matched URI, and the values of the array contain the destination to which the route will be redirected. in the preceding example, if the word "product" appears in the first part of the URL and the number (: num) appears in the second part of the URI, the "catalog" class and "product_lookup" method will be used in place (to be redirected soon ).
You can match the text value or use the following two wildcard types:
: Num will match a segment (segment) that only contains numbers ).
: Any will match any character (it can be multiple segment segments). it can match multiple values, such:
$ Route ['product/(: any) '] = "catalog/product_lookup/$1/$2/$3/$4/$5 "; // pass all parameters in the entire url to the product_lookup method under the catalog controller.
Note: the routes will run in the defined order. high-level routes always take precedence over low-level routes.
Example
Below are some simple examples:
The code is as follows:
$ Route ['journ'] = "blogs ";
If the first segment (class name) of the URL is the keyword "journals", it will be redirected to the "blogs" class for processing.
The code is as follows:
$ Route ['blog/job'] = "blogs/users/34 ";
If the first two segments of the URL are "blog" and "joe", they will be redirected to the "users" method of the "blogs" class for processing. and set ID "34" as the parameter.
The code is as follows:
$ Route ['product/(: any) '] = "catalog/product_lookup ";
When "product" is the first segment in the URL, whatever the second segment is, it will be redirected to the "product_lookup" method of the "catalog" class.
The code is as follows:
$ Route ['product/(: num) '] = "catalog/product_lookup_by_id/$1 ";
When "product" is the first segment in the URL, if the second segment is a number, it will be redirected to the "catalog" class, and pass the matched content to the "product_lookup_by_id" method.
Important: Do not add "/" to the front or back "/".
Regular expression
If you like, you can use regular expressions to customize your routing rules. any valid regular expressions are allowed, or even reverse references.
Note: If you use reverse references, replace the double backslash syntax with the dollar symbol syntax (\ 1 with $1 ).
A typical regular expression looks like the following:
The code is as follows:
$ Route ['products/([a-z] +)/(\ d +) '] = "$1/id _ $2 ";
In the preceding example, the URI similar to products/shirts/123 is changed to the id_123 method of the shirts controller class.
You can also mix wildcards with regular expressions.
Routes retained by the system
The system retains two routes:
The first is the default route:
The code is as follows:
$ Route ['default _ controller'] = 'Welcome ';
This route indicates the controller to be loaded when the URI does not contain the class and controller information to be accessed (that is, only accessing the root directory, such as http: // localhost/ci. In the preceding example, the system loads the "welcome" class (controller ). Make sure to set a default route. Otherwise, your homepage will display the 404 error.
The second route for the 404 page:
The code is as follows:
$ Route ['2014 _ override'] = '';
This route identifies the controller to be loaded if the requested controller cannot be accessed. It overwrites the default 404 error page (that is, it provides a custom 404 page function ). But it does not affect the show_404 () method. this method will still load the default error_404.php page in application/errors/error_404.php.
Important: The reserved route should be defined before all wildcard or regular expression routes.