使用UrlRewriter时遇到了一些问题,在园子里的博问中找到了Astar的回答,防止以后找不到,就记录下来了。

UrlRewriter.NET官方地址:http://urlrewriter.net/

中文帮助中心:http://www.urlrewriter.cn/
说明:UrlRewriter.NET提供了ASP.NET层面上的URL Rewriter

配置:
<!--设置地址重写组件-->
<configSections>
  <section name="rewriter" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,Intelligencia.UrlRewriter" />
</configSections>
<!--地址重写规则-->
<rewriter>
  <rewrite url="^/User/(\d+)$" to="~/User.aspx?id=$1" processing="stop" />
  <rewrite url="^/User/(\w+)$" to="~/User.aspx?name=$1" processing="stop" />
</rewriter>
地址重写规则可以链接到外部XML文件:<rewriter file="~/App_Data/rewrite.xml"/>
<?xml version="1.0" encoding="utf-8" ?>
<rewriteRules>
 <rewrite url="^~/Article/([^\.]+)\.html$" to="~/Article/Display.aspx?n=$1" />
</rewriteRules>
 <!--httpModules-->
<system.web>
  <httpModules>
    <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" />
  </httpModules>
</system.web>
注意事项:
processing="stop":UrlRewriter.NET 在找到一个匹配的重写规则时,不会就此停止,而会继续寻找其余的匹配项,最终生效的则是能够匹配当前请求的最后一个重写规则。如果我们需要 UrlRewriter.NET在找到某个匹配项之后即生效,就需要将processing属性设为stop。例如在上面的配置里,如果“/User/” 后紧跟着数字,则会使用用户ID进行查找,否则则认为当前所提供的是用户名。
url中的正则必需用小刮号封起来,传入的URL要符合url中的设置规则例如:url="^~/Article/([^\.]+)\.html$" 传入必需为fda.html,aaa.aspx即不行,修改正则式后要重新加载解决方案。
入门篇:
   1. 简单实现/去掉问号
<rewrite url="^~/Article/([^\.]+)\.html$" to="~/Article/Display.aspx?n=$1" />
说明:url的规则必需是“除了'.'号之外的任何字符加.html”,例:“abc.html”。
实际地址:Disply.aspx?n=abc
   2. 无扩展名/任意扩展名
<rewrite url="^~/Article/([^\.]+)(\..+?)?$" to="~/Article/Display.aspx?n=$1" />
说明:maozhuxi maozhuxi.htm maozhuxi.html maozhuxi.asp .php maozhuxi.dfkwkfjkskdd
实际地址:Display.aspx?n=maozhuxi
   3. 404检测
<rewriteRules>
 <!-- 404检测: ~/Article/maozhuxi.html -->
 <if url="~/Article/maozhuxi.html" exists="~/Article/maozhuxi.html">
  <forbidden />
 </if>
 <rewrite url="^~/Article/([^\.]+)(\..+?)?$" to="~/Article/Display.aspx?n=$1" />
</rewriteRules>
存在:~/Article/maozhuxi.html,会显示:无法提供此类型的页
不存在:~/Article/maozhuxi2.html,会显示:maozhuxi2
   4. 封IP
<rewriteRules>
 <!-- 封IP: ~/Article/maozhuxi.html -->
 <if url="~/Article/maozhuxi.html" address="192.*">
  <redirect to="~/" />
 </if>
 <rewrite url="^~/Article/([^\.]+)(\..+?)?$" to="~/Article/Display.aspx?n=$1" />
</rewriteRules>
会封:~/Article/maozhuxi.html,会:跳转到主页(注意修改重写规则中的IP地址)
不封:~/Article/maozhuxi2.html,会显示:maozhuxi2
   5. 字符串转换器的应用
    <!-- 字符串转换器的应用: ~/Article/毛主席.html -->
 <rewrite url="^~/Article/([^\.]+?)1\.html$" to="~/Article/Display.aspx?n=${lower($1)}" />
 <rewrite url="^~/Article/([^\.]+?)2\.html$" to="~/Article/Display.aspx?n=${upper($1)}" />
转换为小写:~/Article/MAOZHUXI1.html,会显示:maozhuxi
转换为大写:~/Article/maozhuxi2.html,会显示:MAOZHUXI
   6. 静态映射的应用
<rewriteRules>
 <mapping name="aihao">
  <map from="1" to="看书" />
  <map from="2" to="抽烟" />
  <map from="3" to="玩游戏" />
 </mapping>
 <!-- 静态映射的应用: ~/Article/毛主席.html -->
 <rewrite url="^~/Article/([^\.]+?)(\d+?)\.html$" to="~/Article/Display.aspx?n=${aihao:$2|未知}" />
</rewriteRules>
~/Article/maozhuxi1.html,会显示:看书 
~/Article/maozhuxi2.html,会显示:抽烟
~/Article/maozhuxi3.html,会显示:玩游戏
~/Article/maozhuxi4.html,会显示:未知

进阶篇:
    1. 创建并使用自定义动作
<rewriteRules>
 <!-- 注册动作解析器 -->
 <register parser="VMoom.Framework.HttpModules.UrlRewriter.RewriteActionParser, VMoom.Framework" />
 <rewrite url="^~/Article/([^\.]+?)1\.html$" to="~/Article/Display.aspx?n=$1" />
 <re url="^~/Article/([^\.]+?)(\d+?)\.html$" to="~/Article/Display.aspx?n=$1$2" />
</rewriteRules>
   2. 创建并使用自定义条件
   3. 创建并使用自定义转换器

(一)、扩展名不变的重写:
重写规则:
<add name="RewritePhoto" virtualUrl="^~/(\d+).aspx"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" />
IIS配置:(此配置应该为默认配置,但有的虚拟主机提供商修改了此配置)
网站->属性->目录->配置(G)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选
(二)、伪静态重写,扩展名为.html等
重写规则:
<add name="RewritePhoto" virtualUrl="^~/(\d+).html"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" />
IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
(三)、任意扩展名的重写 如:扩展名为.zxjay
重写规则:
<add name="Rewrite1" virtualUrl="^~/(\d+).zxjay"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" /> 
IIS配置:同上
(四)、无后缀的重写
重写规则:
<add name="Rewrite1" virtualUrl="^~/(\d+)/Default.aspx"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" />
IIS配置:网站->属性->目录->配置(G)...->映射->通配符应用程序映射->插入
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
确认文件是否存在:不选
其原理是:请求"当前目录"时,查找默认文档,实现重写,因此重写规则中的"^~/(\d+)/Default.aspx"要与第一个默认文档相对应。
关于“通配符应用程序映射”的详细信息可参考微软的说明
(五)、二级域名到多级域名的重写
(注意:由于条件的限制,该规则没有测试,理论上可以实现,如果有错误,请留言指正,谢谢!)
重写规则:
<add name="Rewrite1" virtualUrl="^http\://(.*).xianfen.net/Default.aspx"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/Default.aspx?ID=$1"
     ignoreCase="true" />

UrlRewriter配置IIS支持伪静态的更多相关文章

  1. 配置iis支持.json格式的文件

    配置iis支持.json格式的文件发现要让IIS支持json文件并不是单纯的添加mime这么简单啊,以下是设置方法:一.IIS 6 1. MIME设置:在IIS的站点属性的HTTP头设置里,选MIME ...

  2. 配置IIS支持Json格式

    配置iis支持.json格式的文件 原文地址:http://blog.eroad.info/iis-suport-json/ 在做easyUI的官方示例的时候 有的例子是直接读取的json文件,但是默 ...

  3. 问题:iis配置json;结果:如何配置iis支持.json格式的文件

    如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...

  4. IIS支持伪静态(windows 2003)

    IIS配置支持伪静态 ISAPI Rewrite 第一:首先我们需要下载一个ISAPI_Rewrite,有精简版和完全版,一般精简版只能对服务器全局进行配置,而完整版可以对服务器上的各个网站进行伪静态 ...

  5. 配置iis支持json解析,配置ssi

    配置json解析: 添加mime:*.json  类型 text/json 安装iis应用程序开发中的asp功能 添加处理程序映射: 添加脚本映射 请求路径:*.json 可执行文件:C:\Windo ...

  6. II7.5配置IIS支持2G文件下载

    IIS默认支持下载在20M让IIS7.5支持大文件下载,有两个地方 1.打IIS管理器->asp->点限制属性+->设置最大请求实体主体限制为2147483648 2.打开路径C:\ ...

  7. 轻松搞定Win8 IIS支持SVC 从而实现IIS寄宿WCF服务

    写在前面 为了尝试在IIS中寄宿WCF服务,需要配置IIS支持SVC命令,于是便有了在DOS命令中用到ServiceModelReg.exe注册svc命令. 坑爹的是注册成功后就开始报错.无奈之下两次 ...

  8. ASP.NET MVC4通过UrlRewriter配置伪静态,支持html后缀

    参考文章: ASP.NET MVC4通过UrlRewriter配置伪静态 http://blog.csdn.net/just_shunjian/article/details/51132866 .NE ...

  9. 让IIS支持PHP的配置步骤

    本文转自:http://marsren.blog.51cto.com/116511/41199/ 在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的 ...

随机推荐

  1. React和Vue的组件更新比较

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...

  2. JavaScript封装一个MyAlert弹出框

    平时我们想要显示一些提示信息时会用到alert方法,alert是全局的一个方法,会短暂的中断程序,我们主要用来显示提示客户信息.但是这个方法有一定的局限性,而且本身样式也不够美观.于是我封装了一个实用 ...

  3. iOS ipa包瘦身------删除无用图片资源

         随着客户端业务的增多和业务的更新,App包大小越来越大,优化包大小是迫在眉睫,客户端需要优化的地方也有很多,本期主要讲如何查找无用图片并且删除无用图片的方法.      方案1:(暴力方法) ...

  4. 英语学习案例分析APP 201421123108 王坤彬

    第一部分.调研,测评 1.第一次使用经验. 我使用的时候苹果手机下载的必应软件.第一次使用感觉还好,但是知名度比较低,比不上喜马拉雅听书软件,这里我就做两者的对比.首先界面以及种类明显逼格更差点.必应 ...

  5. 201521123067 《Java程序设计》第5周学习总结

    201521123067 <Java程序设计>第5周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. ●在本 ...

  6. 201521123106《java程序设计》第二周学习总结

    1. 本周学习总结 学习了java的基础语法.在java中使用浮点型会不精确,改用double行就好.学习了string的类型,string的对象是不可变的,创建之后不能再修改,在string的拼接中 ...

  7. 201521123012 《Java程序设计》第一周学习总结

    一.本章学习内容 1.了解了JDK.JRE .JVM. 2.大概看过了Java的诞生.版本演进(JDK1.1.4,JDK1.1.5--JDK1.1.8,J2SE1.2--Java SE 8)以及三大平 ...

  8. 201521123079《java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 流与文件 I/O流:Input/Output处理的简称,本质上就是一个数据序列.分为输入流Input Stre ...

  9. eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明

    context-param.listener.filter.servlet  首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...

  10. Spring第一篇【介绍Spring、引入Spring、Spring六大模块】

    前言 前面已经学习了Struts2和Hibernate框架了.接下来学习的是Spring框架-本博文主要是引入Spring框架- Spring介绍 Spring诞生: 创建Spring的目的就是用来替 ...