a new feature in asp.net 2.0 is it's built-in url rewriting support. when i looked into this new feature i found out it lacked regular expressions support, wich is really the point of an url mapper. scottglu at his blog, explains the reason why the asp.net team didn't implemented this feature. basically they realized that a full featured version would want to take advantage of the next iis 7.0 new features, specially the support for all content-types (images and directories).
anyway, it's really simple to implement a url rewriting module with regex support in asp.net. i wrote a quick and simple httpmodule for this. the whole magic is done within a few lines within the httpmodule:
1 public void rewrite_beginrequest(object sender, system.eventargs args) {
2 string strpath = httpcontext.current.request.url.absolutepath;
3 urlredirection opr = new urlredirection();
4 string strurl = strpath;
5 string strrewrite = opr.getmatchingrewrite(strpath);
6 if (!string.isnullorempty(strrewrite)) {
7 strurl = strrewrite;
8 } else {
9 strurl = strpath;
10 }
11 httpcontext.current.rewritepath("~" + strurl);
12 }
the code is self explanatory. when a request that is processed by the asp.net engine, the module checks an xml for a regex match. i've seen many url rewriting engines that uses web.config to store the matching rules but i prefer using an additional xml file. the rewriting rules file look like the following:
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <urlrewrites>
3 <rule name="category page">
4 <url>/([a-za-z][\w-]{1,149})\.aspx</url>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器