UrlRewriter配置IIS支持伪静态
使用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支持伪静态的更多相关文章
- 配置iis支持.json格式的文件
配置iis支持.json格式的文件发现要让IIS支持json文件并不是单纯的添加mime这么简单啊,以下是设置方法:一.IIS 6 1. MIME设置:在IIS的站点属性的HTTP头设置里,选MIME ...
- 配置IIS支持Json格式
配置iis支持.json格式的文件 原文地址:http://blog.eroad.info/iis-suport-json/ 在做easyUI的官方示例的时候 有的例子是直接读取的json文件,但是默 ...
- 问题:iis配置json;结果:如何配置iis支持.json格式的文件
如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...
- IIS支持伪静态(windows 2003)
IIS配置支持伪静态 ISAPI Rewrite 第一:首先我们需要下载一个ISAPI_Rewrite,有精简版和完全版,一般精简版只能对服务器全局进行配置,而完整版可以对服务器上的各个网站进行伪静态 ...
- 配置iis支持json解析,配置ssi
配置json解析: 添加mime:*.json 类型 text/json 安装iis应用程序开发中的asp功能 添加处理程序映射: 添加脚本映射 请求路径:*.json 可执行文件:C:\Windo ...
- II7.5配置IIS支持2G文件下载
IIS默认支持下载在20M让IIS7.5支持大文件下载,有两个地方 1.打IIS管理器->asp->点限制属性+->设置最大请求实体主体限制为2147483648 2.打开路径C:\ ...
- 轻松搞定Win8 IIS支持SVC 从而实现IIS寄宿WCF服务
写在前面 为了尝试在IIS中寄宿WCF服务,需要配置IIS支持SVC命令,于是便有了在DOS命令中用到ServiceModelReg.exe注册svc命令. 坑爹的是注册成功后就开始报错.无奈之下两次 ...
- ASP.NET MVC4通过UrlRewriter配置伪静态,支持html后缀
参考文章: ASP.NET MVC4通过UrlRewriter配置伪静态 http://blog.csdn.net/just_shunjian/article/details/51132866 .NE ...
- 让IIS支持PHP的配置步骤
本文转自:http://marsren.blog.51cto.com/116511/41199/ 在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的 ...
随机推荐
- JS源生代码“增删改查”之增
51呢最近在做一个管理数据的,第一次接触到用JS的源代码去实现一些功能,才知道网页里的许多功能都是依赖于“增删改查”完成的,下面的几张图片就是对于增的演示: 下面是有关HTML的代码:这个主要是弹窗部 ...
- java-多个数的和
目的:实现多个整数相加. 思路:1.首先要确定用户所需整数的个数n,此部分由用户在键盘上输入. 2.创建一个长度为n的数组. 3.用户从键盘上输入n个整数并判断是否输入正确,正确则存入数组,否则重新输 ...
- 第3阶段——内核启动分析之make menuconfig内核配置(2)
目标: 分析make menuconfig内核配置过程 在上1小结中(内核编译试验)讲到了3种不同的配置: (1)通过make menuconfig 直接从头到尾配置.config文件 (2) 通过m ...
- Prism for Xamarin.Forms
一.使用环境 OS:Win 10 16273 VS:VS2017- 15.3.4 Xamarin:4.6.3.4,nuget:2.4 Android Emulator:Visual Studio fo ...
- 关于hashmap的理解
首先分析第一个比较重要的方法 put 方法,源码如下 public V put(K key, V value) { if (key == null) return putForNullKey(valu ...
- 转: 【Java并发编程】之二十一:并发新特性—阻塞队列和阻塞栈(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17511147 阻塞队列 阻塞队列是Java5并发新特性中的内容,阻塞队列的接口是Java. ...
- 【Socket编程】Java通信是这样炼成的
简介 网络无处不在,移动互联时代也早已到来,单机版程序慢慢的已没有生命力,所有的程序都要能够访问网络,比如 QQ 网络聊天程序.迅雷下载程序等,这些程序都要同网络打交道,本次将与各位小伙伴们分享的就是 ...
- Cobbler批量部署CentOS
简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE ...
- Beta版本冲刺前期计划及安排
a. 介绍小组新加入的成员,Ta担任的角色. 吴东益:经讨论决定,Ta担任角色为开发人员 李志霖:在原先的团队中负责前端开发与界面设计.现经讨论决定,Ta此次担任角色为开发人员 由他们替代原来成员陈雄 ...
- 201521123030《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...