大家都知道web.config 中的 urlMappings怎么用

<system.web>
<urlMappings enabled="true">
<add url="~/login.html" mappedUrl="default.aspx?state=222"/>
<add url="~/login.aspx" mappedUrl="default.aspx?state=6"/>
</urlMappings>
</system.web>

这个配置可以使ASP.NET程序在ASP.NET Development Server(就是建ASP.NET项目时选文件系统)直接支持UrlMapping,不过它有几个不足之处:
1、只能映射固定的地址,所以只能一个地址一个地址的配置
2、ASP.NET Development Server中可以不用配什么别的地方,在IIS中受请求响应模型所限,估计还是要在IIS中设映射。这样的话,反而搞得我到处找资料,看怎么实现在ASP.NET Development Server设置映射,得到的结果是不行。
针对于UrlMapping的不支持正则表达式的缺陷,我做了个支持正则表达式的UrlMapping,可惜由于UrlMapping是由HttpApplication调用的,而HttpApplication是Internal的,不能对它做什么动作,所以实现的东东和UrlMapping相比做在Web.config中多做个<Section>

文件下载

(下载文件中包括RegexUrlMapping组件和一个示例ASP.NET,注意ASP.NET程序需部署在IIS中,并且要设置映射,方法是右击虚拟目录,选属性,选配置,在通配符应用程序映射中添加c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll的引用,并去掉确认文件是否存在的钩,这里是为了偷懒才用通配符全部映射到ASP.NET2.0的ISAPI,实际开发中最好酌情添加具体一点的映射)
Web.config中的配置举例如下:

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configSections>
<RegexUrlMappings enabled="true" rebaseClientPath="true">
<add url="(\d+)$" mappedUrl="default.aspx?id=$1"/>
<add url="(?<=/)(?<id>[a-z]+)$" mappedUrl="default.aspx?id=${id}" />
<add url="/$" mappedUrl="/default.aspx?id=0"/>
</RegexUrlMappings>
<system.web>
<httpModules>
<add name="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpModules>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>

其中RegexUrlMapping的属性enabled用于打开和关闭映射,rebaseClientPath参见HttpContext.RewritePath中rebaseClientPath参数

<add>用于添加映射规则,url为匹配路径的正则表达式pattern,mappedUrl是替换规则,用法参见Regex.Replace方法
上例中,第一个add在url中用括号定义了组1,所以在后面引用$1
第二个add在url中用(?<id>)定义了组id,后面用${id}引用了这个组
第三个是固定字符串替换
呵呵,看来正则表达式还是很重要滴~~

http://www.urlrewriting.net/159/en/downloads.html

http://urlrewriter.net/index.php/download

附另外两个地址

关于重定向urlrewriter.urlmapping的更多相关文章

  1. .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法

    在使用.Net 官方 Url重定向组件时,发现若原地址包含中文,如:http://localhost/首页.html 重定向为:http://localhost/index.aspx?id=首页  时 ...

  2. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  3. 利用URLRewriter.dll 实现ASP.NET实现伪静态

    大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访 ...

  4. Http状态码之:301、302重定向

    概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地 ...

  5. 前端学HTTP之重定向和负载均衡

    前面的话 HTTP并不是独自运行在网上的.很多协议都会在HTTP报文的传输过程中对其数据进行管理.HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器.Web代理和缓存的网络世界中,HTT ...

  6. Web安全相关(三):开放重定向(Open Redirection)

    简介 那些通过请求(如查询字符串和表单数据)指定重定向URL的Web程序可能会被篡改,而把用户重定向到外部的恶意URL.这种篡改就被称为开发重定向攻击.   场景分析 假设有一个正规网站http:// ...

  7. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  8. Chrome在302重定向的时候对原请求产生2次请求的问题说明

    这个问题应该确确实实是一个Chrome的BUG,我在自己的编程环境中发现,并在多个服务器,多个编程语言的运行环境,以及多个浏览器下都测试过,都看到有2次请求出现.为了证明不是自己环境的问题,我也特意去 ...

  9. 重定向Http status code 303 和 302

    http 302 http 303 Http 302 302是一个普通的重定向代码.直观的看来是,请求者(浏览器或者模拟http请求)发起一个请求,然后服务端重定向到另一个地址.而事实上,服务端仅仅是 ...

随机推荐

  1. linux服务器默认连接数配置

    vi /etc/security/limits.d/90-nproc.conf * - nofile 65536* - nproc 65536root soft nproc unlimited vi ...

  2. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  3. StudyFoxCMS-8

    1.swiper插件使用 首页图片滚动插件. (1)下载:bower install swiper (2)使用:参考中文官网(http://www.swiper.com.cn/usage/index. ...

  4. javascript实现动态侧边栏

    总的来说就是利用 鼠标悬停onmouseover   和  鼠标移除onmouseout 这两个时间来完成的. 首先是HTML 结构 <body> <div id="div ...

  5. HDU 5783 Divide the Sequence(数列划分)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  6. WinForm关闭窗体彻底的退出方式

    //System.Environment.Exit(0); //Process.GetCurrentProcess().Kill(); //System.Threading.Thread.Curren ...

  7. shell awk入门

    本文参考自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/11/2586985.html awk:好用的数据处理工具 awk 也是一个非常棒的数据处 ...

  8. js插入动态脚本

    原文章:https://www.w3cmm.com/dom/insert-javascript.html 动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该DOM动态添加的脚本.和操作HTM ...

  9. Flex Excel下载

    最近做Flex里的Excel下载,用as3xls进行Excel导出后,Excel修改编辑后老出现:不能以当前格式保存...若要保存所做的更改,请单击“确定”,然后将其另存为最新的格式. 最后通过JAV ...

  10. android通过HttpClient与服务器JSON交互

    通过昨天对HttpClient的学习,今天封装了HttpClient类 代码如下: package com.tp.soft.util; import java.io.BufferedReader; i ...