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的 ...
随机推荐
- vue 父子组件传参
父向子组件传参 例子:App.vue为父,引入componetA组件之后,则可以在template中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,component ...
- [转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp84 Random即:java.util.Random, ThreadL ...
- [[NSBundle mainBundle] pathForResource:fileName ofType:]获取文件路径不成功
目标文件明明已经加入项目了,但是使用[[NSBundle mainBundle] pathForResource:fileName ofType:]来获取文件路径的时候却为nil: 遇到这个问题大家需 ...
- yum仓库的定制
矮哥linux运维群: 93324526 笔者QQ:578843228 一.简介 软件包的分类.源码包脚本安装二进制包(rpm包.系统默认包) 源码包: C语言的源代码优点:开源,如果有能力,可以修改 ...
- js模拟点击事件实现代码
js模拟点击事件实现代码 类型:转载 时间:2012-11-06 在实际的应用开发中,我们会常常用到JS的模事件,比如说点击事件,举个简单的例子,点击表单外的"提交"按钮来提交表单 ...
- 201521123002 《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- sublime主题安装
网上发现与之前最相近的两款皮肤分别是Theme – Soda与Flatland.这里就记录一下安装与使用方法. 方法一:手动下载安装: 1.下载安装SublimeText2,这个我就不说了.网上的版本 ...
- Java课程设计--GUI密码生成器201521123033
1.团队课程设计题目 基于GUI的密码生成器 团队博客链接 2.个人负责模块 (1)界面设计 (2)部分错误输入的提示 (3)一键复制密码功能的实现 3.个人代码的提交记录截图 4.个人代码展示以及代 ...
- java课设-计算数学表达式的程序,201521123050,肖世松,个人
1.团队课程设计博客链接 http://www.cnblogs.com/xss666/p/7063780.html 2.个人负责模块或任务说明 个人负责:计算器外观,左容器CalPanelL p1: ...
- 201521123029《Java程序设计》第十周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...