[Tip of the Week] ColdBox Routes

Hopefully you are already familiar with the format of a default ColdBox URL when using the SES interceptor.

mysite.com/index.cfm/myHandlerName/myActionName

Of course, a simple rewrite rule can simplify that even further to:

mysite.com/myHandlerName/myActionName

What you may not realize is that URL pattern is called a “route” and not only can be changed, but you can add as many customized routes as your application desires. The magic happens in your /config/routes.cfm file where all the routes are declared in the order they should be processed. You’ll find the default route in that file:

addRoute(pattern=":handler/:action?");

The syntax for adding a new custom route looks like this:

addRoute(pattern="/URLStringToMatch", handler=“handlerName”, action=“actionName”);

That means, you could set up a route like so:

addRoute(pattern="/blog", handler=“entryHandler”, action=“listEntries”);

Now, the following two URLs would point to the exact same thing (with the second option being obviously preferable):

mysite.com/entryHandler/listEntries
mysite.com/blog

You can even clean up URLs that have variables. Consider the following page on your site:

mysite.com/services/products/productDetail/productID/1234

Just add a new route that looks like this:

addRoute(pattern="/product/:productID", handler=“services.products”, action=“productDetail”);

And now the following URL will give you the same page:

mysite.com/product/1234

As you can see, routes are a very powerful way to keep those URLs looking sharp, but we’re barely scratching the surface of what you can do. Don’t get intimidated though-- read through the docs dive in!

More info here: http://wiki.coldbox.org/wiki/URLMappings.cfm#URL_Mappings

Thanks!

~Brad

ColdBox Platform Evangelist
Ortus Solutions, Corp

E-mail: brad@coldbox.org
ColdBox Platform: http://www.coldbox.org
Blog: http://www.codersrevolution.com