Mapping URLs in ASP.NET
ASP.NET offers several ways of mapping nice public URLs to cryptic internal URLs matching the actual implementation.
The simplest way is to match each public URL to its internal value. You can do this by either creating dummy pages which do the redirecting or by adding them to the urlMappings
section of the web.config
file (brought by .NET Framework 2.0). The latter solution is preferable because of simpler maintenance but both of them have the downside of being completely static (an entry is necessary for each mapped page).
A better solution is to implement an IHttpHandler
or IHttpModule
and do the mapping by calling HttpContext.RewritePath()
. You could also change the requested page by using Server.Transfer()
or maybe even Response.Redirect()
but they have their disadvantages when used for URL mapping.
To avoid having to recompile your IHttpHandler
implementation every time the mapping logic changes or extends you could configure it through a custom section in the web.config
file. Regular expressions are a nice tool for defining such mappings as implemented in DasBlog sources (check newtelligence.DasBlog.Web.Core.UrlMapperModule
). You could even use UrlRewritingNet.UrlRewrite if you don't like reinventing the wheel.