The way Rails handles this is by making every segment explicitly include a `.` if you want the segment to match a `.` (unless you use `constraints`). e.g. `/users/matsumoto.yukihiro` will _not_ match `/users/:name`. However, common extensions are handled magically, and will define the request format if they exist, so if you make the route `*pages` it will match `/foo/bar.json` but set `pages` to `foo/bar`. Up to you whether revel should also have such magic or not.

I can imagine someone using the route `/foo/:bar.baz.json` and expecting it to match `/foo/a.b.baz.json`, so maybe what we should do is use everything after the first `.` when defining the extension, but then try every potential suffix when matching a URI?