冰天雪地在线裸求个UrlRewriter的正则表达式 需求: www.xxxxx.com/aaa ----> www.xxxxx.com/Search.aspx?ID=aaa
      www.xxxxx.com/aaa.aspx 不变,正常访问 
      www.xxxxx.com/b/aaa ----> www.xxxxx.com/book/Show.aspx?ID=aaa
      www.xxxxx.com/book/aaa.aspx ----> 不变,正常访问
      www.xxxxx.com/u/aaa ----> www.xxxxx.com/user/Show.aspx?ID=aaa
      www.xxxxx.com/user/aaa.aspx ----> 不变,正常访问概括: 页面肯定都是.aspx的页面,不会有其他扩展名的页面。所以只要判断地址中是否带".aspx"即可。
      如果带.aspx 则不重写,如果不带.aspx 则视为重写。
      重写分为两种情况,第一种情况是根目录下重写 www.xxxxx.com/aaa 
      第二种情况是二级目录下的重写 www.xxxxx.com/b/aaa 
      
      只有这两种情况,不存在三级目录重写的情况。下面是我尝试着写的,一塌糊涂,请高手指点,谢谢。      <RewriterRule>
        <LookFor>~/(.*)</LookFor>
        <SendTo>~/Default.aspx?ID=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/B/(.*)\.aspx</LookFor>
        <SendTo>~/Book/Show.aspx?ID=$1</SendTo>
      </RewriterRule>

解决方案 »

  1.   


    <RewriterConfig>
    <Rules>
    <RewriterRule>
    <LookFor>~/([^/]*)(?&lt;!\.aspx)$</LookFor>
    <SendTo>~/Search.aspx?id=$1</SendTo>
    </RewriterRule>
    <RewriterRule>
    <LookFor>~/b/([^/]*)(?&lt;!\.aspx)$</LookFor>
    <SendTo>~/book/Show.aspx?id=$1</SendTo>
    </RewriterRule>
    <RewriterRule>
    <LookFor>~/u/([^/]*)(?&lt;!\.aspx)$</LookFor>
    <SendTo>~/user/Show.aspx?id=$1</SendTo>
    </RewriterRule>
    </Rules>
    </RewriterConfig>
      

  2.   

     <RewriterRule>
            <LookFor>~/(\w+)</LookFor>
            <SendTo>~/Search.aspx?ID=$1</SendTo>
          </RewriterRule>
          <RewriterRule>
            <LookFor>~/[Bb]/(\w+)</LookFor>
            <SendTo>~/Book/Show.aspx?ID=$1</SendTo>
          </RewriterRule>
     <RewriterRule>
            <LookFor>~/u/(\w+)</LookFor>
            <SendTo>~/user/Show.aspx?ID=$1</SendTo>
          </RewriterRule>