关闭

URLRewriter 配置文件设置

标签: processingurl扩展redirectencodingiis
1542人阅读 评论(0) 收藏 举报
分类:

<!--设置地址重写组件-->
<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" />


if ($ != jQuery) { $ = jQuery.noConflict(); }

0
0
查看评论

64位Win7 IIS7 urlrewriter设置问题

在项目的Web.config文件中确保有以下配置节 1.       2.              3.在IIS7路由不成功的主要原因是缺少以下的配置...
  • YaoXTao
  • YaoXTao
  • 2015-06-12 16:42
  • 2820

Urlrewrite 配置信息写在另外一个文件

1.修改类
  • hougelou
  • hougelou
  • 2014-10-16 15:42
  • 424

Java中urlrewriter的使用

<br /> 最近公司以前的一个项目需要升级改版,其中的一个模块是使用Struts2做的不需要改动,但是需要将其从之前的项目里面剥离出来,看了看官网,发现所有的链接访问的静态地址,以为是FreeMarker实现的,仔细研究了会发现不是那么回事,原来是伪静态,程序使用了urlrewrite...
  • freecodetor
  • freecodetor
  • 2010-08-18 16:09
  • 3433

.NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的配置方法)

接上一篇  .NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 在IIS中新建网站(端口号8111)       直接运行http://localhost:8111/     错误截图   ...
  • porschev
  • porschev
  • 2011-10-21 17:46
  • 2999

URLRewriter组件及源码

微软推出的一款重写url的一个组件,以及组件源代码。可以实现 网站的地址重写,通常用于网址的伪静态化。可以让网站更好的被搜索引擎收录。用法如下:原理:当iis接收到请求之后,判断请求页面的后缀名,然后通过iis配置中的映射中设置的,哪种后缀的文件是由哪个处理程序处理的规则交由相应的程序来处...
  • nopole
  • nopole
  • 2008-02-01 17:21
  • 1706

URLRewriter设置Config和IIS配置做伪静态

一、首先检查config文件里面是否包含这两个节点       SectionHandler, URLRewriter"/>            ...
  • huangwenhua5000
  • huangwenhua5000
  • 2013-12-12 16:45
  • 636

使用Intelligencia.UrlRewriter重写URL

添加Intelligencia.UrlRewriter.dll的引用,然后在web.config中设置三个地方即可:在节中加上;在节中加上;在节中添加      这段~/(.+).html$要重写的匹配正则,呈现给用户,实际地址是~/ViewNews.asp...
  • gui0605
  • gui0605
  • 2008-06-11 13:41
  • 3462

.NET4.0下web应用程序用UrlRewriter.dll重写无后缀路径

示例环境:VS2010 要求:               重写前:http://localhost:13275/Default.aspx?username=wilson        ...
  • porschev
  • porschev
  • 2011-10-21 17:20
  • 1503

urlrewriter 用法

1、简介       UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜...
  • JackieLiuLixi
  • JackieLiuLixi
  • 2014-08-01 14:07
  • 1003

Intelligencia.UrlRewriter使用说明(转)

Intelligencia.UrlRewriter使用说明
  • shuanghusun
  • shuanghusun
  • 2011-01-19 13:22
  • 3756
    个人资料
    • 访问:522175次
    • 积分:7081
    • 等级:
    • 排名:第3845名
    • 原创:188篇
    • 转载:158篇
    • 译文:0篇
    • 评论:44条
    文章分类
    最新评论