关于URLRewriter与众不同的要求(不要说我变态哈,其实就是正则表达式的问题),谁能搞定,我们推荐他做版主。<RewriterRule>
<LookFor>~/(.*?)/(index\.aspx|default\.aspx)</LookFor>  <!--访问路径-->
<SendTo>~/info/index.aspx?username=$1</SendTo>          <!--实际路径-->
</RewriterRule>大家知道,这里的意思是:
当用户访问:http://localhost/test/index.aspx时,
实际上是访问:http://localhost/info/index.aspx?username=test。
通过测试,这个想法是可以实现的。此时文件存放在“/”下的情况是这样的:
/┬ …
 ├ info/index.aspx
 ├ admin/index.aspx
 ├ temp/index.aspx
 ├ test/index.aspx
 ├ user/index.aspx
 └ ……问题:
如上图中,当重写的文件夹(或用户)增多,根下面就会有很多文件夹,容易和系统文件混淆。
如果能将实际访问文件路径的和重写的文件分类放开,那会好很多,如下图:
/┬ …
 ├ info/index.aspx
 └ temp/┬ admin/index.aspx
         ├ test/index.aspx
         ├ user/index.aspx
         └ ……
(注:info下的文件是实际访问的文件,temp是根据用户名重写的文件)。请问:
————————————————————————————————————————
如何修改该RewriterConfig节中lookFor的相关正则表达式?
<RewriterRule>
<LookFor>~/(.*?)/(index\.aspx|default\.aspx)</LookFor>  <!--访问路径-->
<SendTo>~/info/index.aspx?username=$1</SendTo>          <!--实际路径-->
</RewriterRule>

解决方案 »

  1.   

    不要放在根目录,放在二级目录.
    当用户访问:http://localhost/user/test/index.aspx时,
    实际上是访问:http://localhost/info/index.aspx?username=test。
      

  2.   

    你这里不是都规划好了存放方式吗,在正则一下不可?  ……$2/┬ …
     ├ info/index.aspx
     └ temp/┬ admin/index.aspx
             ├ test/index.aspx
             ├ user/index.aspx
             └ ……
    temp是根据用户名重写的文件如果根据用户名,每个用户都不一样,能实现吗,拿什么匹配或比较?
      

  3.   

    <LookFor>~/temp/(.*?)/(index\.aspx|default\.aspx)</LookFor>  <!--访问路径-->
    <SendTo>~/info/index.aspx?username=$1</SendTo>          <!--实际路径-->
      

  4.   

    你可以按你的需求改它的URLRewriter,判断request的url是否符合lookfor的正则,是的话按sendto转化,最后调用
    context.RewritePath
      

  5.   

    <LookFor>(.*?)/(?:.*/)?(index\.aspx|default\.aspx)</LookFor>
    <SendTo>~/info/index.aspx?username=$1</SendTo>你的意思还不大了解 按我理解的你的意思写了一下 看看是不是你想要的
    如果是 记得给分就好 版主不适合我
      

  6.   

    也就是说,
    在d:\web\i\下面存放不同id值的网站,如:
    d:\web\i\001
    d:\web\i\002
    d:\web\i\003
    d:\web\i\004
    而实际访问的是:
    d:\web\info\index.aspx?id=001
    d:\web\info\index.aspx?id=002
    d:\web\info\index.aspx?id=003
    d:\web\info\index.aspx?id=004这时候,通过UrlRewrite倒是可以实现这样的路径来访问:
    http://www.xxx.com/i/001/
    http://www.xxx.com/i/002/
    http://www.xxx.com/i/003/
    http://www.xxx.com/i/004/如果我不想要访问的路径是上面的,而是下面的:
    http://www.xxx.com/001/
    http://www.xxx.com/002/
    http://www.xxx.com/003/
    http://www.xxx.com/004/主要的问题是:
    我不想把要访问的放在网站的根下来实现上面的这种访问方式,如:
    d:\web\001
    d:\web\002
    d:\web\003
    d:\web\004
      

  7.   

    这跟本不是正则的问题
    如果你想不带后缀的话就必须这么放 
    此目录中还需要具有 Default.aspx 页面
    以便可以将请求传递给 ASP.NET 引擎当然要是有。ASPX的话 根本就不用目录