冰天雪地在线裸求个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>
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>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/([^/]*)(?<!\.aspx)$</LookFor>
<SendTo>~/Search.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/b/([^/]*)(?<!\.aspx)$</LookFor>
<SendTo>~/book/Show.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/u/([^/]*)(?<!\.aspx)$</LookFor>
<SendTo>~/user/Show.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<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>