比如:
当点
/pro.aspx?id=5  变成成 /pro/5反过来,url传来/pro/5 又要执行pro.aspx?id=5先整个简单的

解决方案 »

  1.   

    继承IHttpModule,看MSDN吧,很简单
      

  2.   

    如下是摘自网上的一段内容,供参考:
    ----------------------------------------------
    URL重写是截取传入Web请求并自动将请求重定向到其他URL的过程。 比如浏览器发来请求hostname/101.aspx,服务器自动将这个请求中定向为http://hostname/list.aspx?id=101。 
    url重写的优点在于: 
    缩短url,隐藏实际路径提高安全性; 
    易于用户记忆和键入; 
    易于被搜索引擎收录; 
    实现URL重写的几个步骤: 第一: 
    下载MS的URLRewriter.dll,放到你的web程序的bin下 
    下载地址:download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi 
    第二: 
    下载完成后,在web.config里设置如下: 
    <?xmlversion=\"1.0\"encoding=\"utf-8\"?> 
    <!--overred--> 
    <configuration> 
    <configSections> 
    <sectionname=\"RewriterConfig\"type=\"URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter\"/> 
    </configSections> 
    <RewriterConfig> 
    <Rules> 
    <RewriterRule> 
    <LookFor>~/d(\\d+)\\.aspx</LookFor> 
    <SendTo>~/default.aspx?id=$1</SendTo> 
    </RewriterRule> 
    </Rules> 
    </RewriterConfig> 
    <system.web> 
    <httpHandlers> 
    <addverb=\"*\"path=\"*.aspx\"type=\"URLRewriter.RewriterFactoryHandler,URLRewriter\"/> 
    </httpHandlers> 
    </system.web> 
    </configuration> 
    其中 
    <sectionname=\"RewriterConfig\"type=\"URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter\"/> 用于指定配置节\"RewriterConfig\"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中 关键的是这两句 
    <LookFor>~/d(\\d+)\\.aspx</LookFor> 
    <SendTo>~/default.aspx?id=$1</SendTo> <LookFor>~/d(\\d+)\\.aspx</LookFor>表示,用户输入的url,d(\\d+)\\.aspx是url中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,并以.aspx结尾。用户也可根据自己的需要自行设定)。 [Page]
    <SendTo>~/default.aspx?id=$1</SendTo>,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问defalutl.aspx并传入参数id,其值$1将用用户请求的文件名中的第一个数字来表示。 
    例如用户输入hostname/d11.aspx,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http://hostname/d11.aspx,实际访问的是http://hostname/default.aspx?id=11。这样就起到了隐藏真实文件名,并便于用户记忆的作用。 处理回发 
    在重写后的url里如果产生回发,例如有一个按钮,又调用了该被重写的aspx,用户浏览器中将会显示该aspx文件实际的地址,也就是http://hostname/default.aspx?id=11。但从用户的角度考虑,如果单击按钮时突然看到URL更改会使他们感到不安。因此必须解决这个问题。 
    解决方法有二: 
    (1)自己定义一个Actionlessform类,在aspx中不再使用系统提供的form标记 namespaceActionlessForm 

    publicclassForm:System.Web.UI.HtmlControls.HtmlForm 

    protectedoverridevoidRenderAttributes(HtmlTextWriterwriter) 

    writer.WriteAttribute(\"name\",this.Name); 
    base.Attributes.Remove(\"name\"); 
    writer.WriteAttribute(\"method\",this.Method); 
    base.Attributes.Remove(\"method\"); 
    this.Attributes.Render(writer); 
    base.Attributes.Remove(\"action\"); 
    if(base.ID!=null) 
    writer.WriteAttribute(\"id\",base.ClientID); 


      

  3.   

    ----------------------------------------------
    url重写代码:RewritePath() 实现简单高效的URL重写代码protected void Application_BeginRequest(Object sender, EventArgs e) 

    Regex re = new Regex(@"^((/[^/0-9]+)+)(/[0-9]+(/[^/]+)*)\.aspx$", RegexOptions.Compiled); 
    Match match = re.Match(HttpContext.Current.Request.Path); if(match.Success) 

    re = new Regex(@"/([^/]+)", RegexOptions.Compiled); 
    MatchCollection matches = re.Matches(match.Result("$3")); string page = match.Result("$1")+".aspx?q0="+matches[0].Result("$1"); 
    for(int i=1; i<matches.Count; i++) 

    page += "&q"+i+"="+matches[i].Result("$1"); 
    } HttpContext.Current.RewritePath(page); //关键步骤 

    }如:
    //原始的URL:http://www.csdn.net/test/33/44.aspx 
    //转换后URL:http://www.csdn.net/test.aspx?q1=33&q2=44 
      

  4.   

    http://www.51aspx.com/CV/UrlReWriter/
      

  5.   

    用UrlRewritingNet.UrlRewriter.dll吧,比较简单的一种,该文件也不大,网上一搜一堆,有源码下载
      

  6.   

    http://www.cnblogs.com/notus/archive/2007/03/13/673222.html