Framework solution
The practical business of transforming URIs has to be done in two parts. Each request involves an incoming URI, and if it has been transformed from a query string, it will normally need to be decoded back into a query string. The other aspect of URI transformation is that every URI that is to be part of the page being prepared for the browser must be turned from a query string to a "more friendly" form. Handling a URI directly turns out to be a lot simpler, and we will return to that a little later.
Transformations can be applied in more than one stage. The first one we shall use is the mechanical changing of a query string into what looks like a directory specification. A significant part of the work is done by the application and not by the framework, but the process is organized by the framework. While this is going on, the query string will usually contain the formal name for the application, and it can be replaced by a more readable string.
An alternative that can override...