summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/general/routing.rst
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-10-30 12:42:01 +0100
committerAndrey Andreev <narf@bofh.bg>2012-10-30 12:42:01 +0100
commit7676c2d6761cb3cdeccf005c2a30140f0ba3ced5 (patch)
treeb9af3d1cdf2523bc8e863c2a9b2abd47797a74f0 /user_guide_src/source/general/routing.rst
parent0dfb62ff0ab1d184e20819a066139fea28d68da4 (diff)
Fix issue #658 (:any wildcard matching slashes)
Diffstat (limited to 'user_guide_src/source/general/routing.rst')
-rw-r--r--user_guide_src/source/general/routing.rst30
1 files changed, 25 insertions, 5 deletions
diff --git a/user_guide_src/source/general/routing.rst b/user_guide_src/source/general/routing.rst
index c03937070..a6332c90c 100644
--- a/user_guide_src/source/general/routing.rst
+++ b/user_guide_src/source/general/routing.rst
@@ -29,7 +29,7 @@ Setting your own routing rules
Routing rules are defined in your application/config/routes.php file. In
it you'll see an array called $route that permits you to specify your
own routing criteria. Routes can either be specified using wildcards or
-Regular Expressions
+Regular Expressions.
Wildcards
=========
@@ -47,7 +47,11 @@ segment of the URL, and a number is found in the second segment, the
You can match literal values or you can use two wildcard types:
**(:num)** will match a segment containing only numbers.
-**(:any)** will match a segment containing any character.
+**(:any)** will match a segment containing any character (except for '/', which is the segment delimiter).
+
+.. note:: Wildcards are actually aliases for regular expressions, with
+ **:any** being translated to **[^/]+** and **:num** to **[0-9]+**,
+ respectively.
.. note:: Routes will run in the order they are defined. Higher routes
will always take precedence over lower ones.
@@ -104,12 +108,28 @@ rules. Any valid regular expression is allowed, as are back-references.
A typical RegEx route might look something like this::
- $route['products/([a-z]+)/(\d+)'] = "$1/id_$2";
+ $route['products/([a-z]+)/(\d+)'] = '$1/id_$2';
In the above example, a URI similar to products/shirts/123 would instead
-call the shirts controller class and the id_123 function.
+call the shirts controller class and the id_123 method.
+
+With regular expressions, you can also catch a segment containing a
+forward slash ('/'), which would usually represent the delimiter between
+multiple segments.
+For example, if a user accesses a password protected area of your web
+application and you wish to be able to redirect them back to the same
+page after they log in, you may find this example useful::
+
+ $route['login/(.+)'] = 'auth/login/$1';
+
+That will call the auth controller class and its ``login()`` method,
+passing everything contained in the URI after *login/* as a parameter.
+
+For those of you who don't know regular expressions and want to learn
+more about them, `regular-expressions.info <http://www.regular-expressions.info/>`
+might be a good starting point.
-You can also mix and match wildcards with regular expressions.
+..note:: You can also mix and match wildcards with regular expressions.
Reserved Routes
===============