UrlRewriter配置IIS支持伪静态
来源:互联网 发布:网络订餐监管 编辑:程序博客网 时间:2024/05/18 03:07
使用UrlRewriter时遇到了一些问题,在园子里的博问中找到了Astar的回答,防止以后找不到,就记录下来了。
UrlRewriter.NET官方地址:http://urlrewriter.net/
中文帮助中心:http://www.urlrewriter.cn/
说明:UrlRewriter.NET提供了ASP.NET层面上的URL Rewriter
配置:
<!--设置地址重写组件-->
<configSections>
<sectionname="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文件:<rewriterfile="~/App_Data/rewrite.xml"/>
<?xml version="1.0" encoding="utf-8"?>
<rewriteRules>
<rewriteurl="^~/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 .phpmaozhuxi.dfkwkfjkskdd
实际地址:Display.aspx?n=maozhuxi
3. 404检测
<rewriteRules>
<!-- 404检测:~/Article/maozhuxi.html -->
<if url="~/Article/maozhuxi.html"exists="~/Article/maozhuxi.html">
<forbidden/>
</if>
<rewriteurl="^~/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.*">
<redirectto="~/" />
</if>
<rewriteurl="^~/Article/([^/.]+)(/..+?)?$" to="~/Article/Display.aspx?n=$1"/>
</rewriteRules>
会封:~/Article/maozhuxi.html,会:跳转到主页(注意修改重写规则中的IP地址)
不封:~/Article/maozhuxi2.html,会显示:maozhuxi2
5. 字符串转换器的应用
<!-- 字符串转换器的应用: ~/Article/毛主席.html-->
<rewriteurl="^~/Article/([^/.]+?)1/.html$"to="~/Article/Display.aspx?n=${lower($1)}" />
<rewriteurl="^~/Article/([^/.]+?)2/.html$"to="~/Article/Display.aspx?n=${upper($1)}" />
转换为小写:~/Article/MAOZHUXI1.html,会显示:maozhuxi
转换为大写:~/Article/maozhuxi2.html,会显示:MAOZHUXI
6. 静态映射的应用
<rewriteRules>
<mappingname="aihao">
<map from="1"to="看书" />
<map from="2"to="抽烟" />
<map from="3"to="玩游戏" />
</mapping>
<!-- 静态映射的应用: ~/Article/毛主席.html-->
<rewriteurl="^~/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>
<!-- 注册动作解析器-->
<registerparser="VMoom.Framework.HttpModules.UrlRewriter.RewriteActionParser,VMoom.Framework" />
<rewriteurl="^~/Article/([^/.]+?)1/.html$" to="~/Article/Display.aspx?n=$1"/>
<reurl="^~/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支持伪静态
- UrlRewriter配置IIS支持伪静态
- UrlRewriter配置IIS支持伪静态
- UrlRewriter配置IIS支持伪静态
- UrlRewriter配置IIS支持伪静态
- UrlRewriter.dll伪静态的IIS配置
- URLRewriter配置伪静态
- URLRewriter设置Config和IIS配置做伪静态
- .net 用URLRewriter 实现 伪静态 2003 iis配置/win7 iis配置
- 网站使用了UrlRewriter.dll伪静态,iis需要配置哪些地方
- 网站使用了UrlRewriter.dll伪静态,iis需要配置哪些地方
- 通过UrlRewriter配置MVC4伪静态
- 通过UrlRewriter配置MVC4伪静态
- 通过UrlRewriter配置MVC4伪静态
- 通过UrlRewriter配置MVC4伪静态
- IIS伪静态配置
- IIS配置支持伪静态 ISAPI Rewrite(win2003系统)
- IIS配置支持伪静态 ISAPI Re…
- 维护SAP系统时区
- 结构化思考—给RD新人的第一堂流程培训课(1)
- Mysql表的行号
- C#窗体内嵌外部程序(cmd.exe)的显示
- 在Linux等UNIX家族操作系统玩转Symbian
- UrlRewriter配置IIS支持伪静态
- TCP+UDP+PROCESS
- n后问题迭代, 递归解法...
- 如何整合Apache和Tomcat部署Web应用
- mysql存储引擎:InnoDB和MyISAM的区别与优劣
- SWT实现任务栏图标(系统托盘),带菜单和ToolTip
- 再谈高质量c++编程的例题
- ZJ卫视的“末落”
- 如何注册DLL、 进程/文件详细信息