[转]URLRewriter使用通配符

本文介绍了在ASP.NET中使用URL重写的几个易忽视的细节,包括如何通过配置Web.config文件来实现对不同URL形式的有效捕获,并将其重定向到指定页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上有很多写这个组件使用的文章,如何使用我就不细述了,有关在 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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值