I figured out part of the problem. In the code above, it needs to be 'routers =', not 'router ='. This works exactly like you mentioned it would. If you go to /test, it expects to find a test() function in your default controller. In my case, since this is going to be a WordPress-like application, I won't know what pages will be defined ahead of time. So is there some kind of catch-all function I can use in the default controller?
If you go to /blog/the-post, I would expect to have to define a blog() function, and return the content for the-post. But for pages that should be on the root, like /about or /random-page, how would I catch this? I would rather not have to do /page/about instead.