Thanks for everyone's thoughts. With the information provided, I came across what I think is the solution I need:
In the Global.asax (or via an HttpModule), listen to the BeginRequest event and apply Context.Rewrite path there:
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
{
Context.RewritePath("Default.aspx?id=Games");
}
}
And then, on the OnPreInit method of the page that will handle these requests, Rewrite path needs to be applied again so that PostBacks will work appropriately:
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Request.QueryString["id"] == null)
return;
if (Request.QueryString["id"].ToLower().Equals("games"))
Context.RewritePath("Games", "", "id=Games");
}
The key that makes this work better than a lot of URL-rewriting modules I came across is that the paths can be dynamic. That is, the created URLs can be data-driven.