[转]URLRewriter使用通配符

网上有很多写这个组件使用的文章,如何使用我就不细述了,有关在 ASP.NET 中执行 URL 重写的文章请看下面链接:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true

我这里要说的是其中几个很容易被忽视的小细节。

问题场景:
比如实际我并不存在下面三个WEB路径:

http://*******/Tag/Java
http://*******/Tag/Java/
http://*******/Tag/Java/Default.aspx

我想把它重定向到
http://*******/List.aspx?tag=Java

这时候如果我们偷懒,直接用Scott Mitchell 的 URLRewriter 组件,
需要注意的有几个地方:

1、我们需要给IIS设置通配符映射,而且这个映射必须不进行文件是否存在检查。

2、我们在WEB.config 中应该用 httpModules 来定义扑捉用户的请求,而不是 httpHandlers。
因为我们这里要处理 http://*******/Tag/Javahttp://*******/Tag/Java/ 这样的请求。

3、设置这个信息的 Web.config 应该是根站点目录下的 Web.config,而不是 /Tag/ 目录下的Web.config。

4、要扑捉的URL应该这三种情况都计算,而不是只考虑 http://*******/Tag/Java/Default.aspx 这种情况。
参考配置如下:

  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/tag/([\w]+)/default\.aspx</LookFor>
        <SendTo>~/List.aspx?Tag=$1</SendTo>
      </RewriterRule>
    </Rules>
    <Rules>
      <RewriterRule>
        <LookFor>~/tag/([\w]+)/</LookFor>
        <SendTo>~/List.aspx?Tag=$1</SendTo>
      </RewriterRule>
    </Rules>
    <Rules>
      <RewriterRule>
        <LookFor>~/tag/([\w]+)</LookFor>
        <SendTo>~/List.aspx?Tag=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

原文地址:https://www.cnblogs.com/scgw/p/731623.html