I've always been fond of making my URL's clean and simple. With that being
said, URL variables are always useful. But in the case of this site, I decided
to clean up the URL's so it's very easy for people to find content. To do this,
I added the code:
void Application_BeginRequest(object sender,
EventArgs e) { HttpContext context = HttpContext.Current; string path
= context.Request.Path; if (path.Contains(".aspx"))
{ if (path.ToLower().Contains("/article/"))
{ string id
= path.Remove(0, path.LastIndexOf("/") + 1).Replace(".aspx", ""); try { int.Parse(id);
context.RewritePath("~/article/article.aspx?ArticleID=" +
id); } catch { // don't do anything because
it's a postback } } } }
It's fairly simple to follow. First, I checked to see if it was an ASPX page, so I
can weed out all the HTTP Handlers being used. Then I checked if it's a page I want
to manipulate. Essentially, what Context.RewritePath does is take the incoming URL
and modify it before it hits the page handler. So when I go to /Article/3.aspx, the
code see's that it contain's both '.apsx' and 'article', and then because I know the
format, I am stripping off everything else and keeping the article ID. Once that is
done I pass the ID to the page that actually get's called behind the scenes. It's
a quick and dirty way to make URL's human-friendly.