目录

  • URL重写的业务需求

  • ReWritingNet组件主要功能

  • 配置IIS(IIS7/8环境下)

  • 程序代码

  • 重写规则

一,URL重写的业务需求

  1. 顾客可以直接用浏览器bookmark功能将页面连结储存起来.
  2. url有意义,便于记忆URL
  3. 利于搜索引擎收录
  4. 便于更新
  5. 隐藏实际文件路径,提高网站的安全性

二,ReWritingNet组件主要功能

  1. 基于正则表达式的重写
  2. 支持Themes和母版页
  3. 支持输出缓存
  4. 支持信任级别为"Medium"的使用环境
  5. 支持Postback
  6. 支持无Cookie的Session
  7. 运行时添加、修改改写规则
  8. 容易安装使用

三,配置IIS(IIS7/8环境下)

  1. 下载伪静态组件:http://www.iis.net/downloads/microsoft/url-rewrite
  2. 安装伪静态组件

查看是否安装成功

四,程序代码

  1. 引入Dll文件
  • 把UrlRewritingNet.UrlRewriter.dll文件添加的工程的Bin文件下
  1. Web Config配置
a.首先、在ConfigSections节新增Section,如下
  1. <configSections>
  2. <section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
  3. </configSections>
b.在 <system.web>节点下配置如下内容
  1. <httpModules>
  2. <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
  3. </httpModules>

解释:HttpModule 是实现 IHttpModule 接口和处理事件的程序集。ASP.NET 包含一组可由应用程序使用的 HttpModule 模块。例如,ASP.NET 提供了 SessionStateModule 来向应用程序提供会话状态服务。可以创建自定义 HttpModule以响应 ASP.NET 事件或用户事件

c.在<configuration>节点配置重写规则,或者重新新建一个urlrewriting.config来配置重写规则
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <urlrewritingnet rewriteOnlyVirtualUrls="true" defaultPage="" contextItemsPrefix="QueryString" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
  3. <rewrites>
  4. <!--首页-->
  5. <add name="eshop" virtualUrl="^~/(\d+).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/VipStore/5/Index.aspx?StoreID=$1" ignoreCase="true"/>
  6. <!--默认-->
  7. <add name="default" virtualUrl="^~/default.html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Search.aspx" ignoreCase="true"/>
  8. <add name="default2" virtualUrl="^~/default.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Search.aspx" ignoreCase="true"/>
  9. <add name="default3" virtualUrl="^~/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Search.aspx" ignoreCase="true"/>
  10. </rewrites>
  11. </urlrewritingnet>

五, 重写规则

(一)、扩展名不变的重写
  1. <add name="default2" virtualUrl="^~/default.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Search.aspx" ignoreCase="true"/>
(二)、伪静态重写,扩展名为.html
  1. <add name="default" virtualUrl="^~/default.html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Search.aspx" ignoreCase="true"/>
(三)、任意扩展名的重写 如:扩展名为.tkx,配置和伪静态一样配置
  1. <!-- 任意扩展名的重写如:扩展名为.tkx-->
  2. <add name="RewriteIndex" virtualUrl="^~/index_(\d+).tkx"
  3. rewriteUrlParameter="ExcludeFromClientQueryString"
  4. destinationUrl="~/index2.aspx?ID=$1"
  5. ignoreCase="true" />

IIS配置:扩展名如果不在IIS处理程序映射内,那么需要添加对应的处理程序映射

可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

(四)、无后缀的重写
  1. <add name="muying" virtualUrl="^~/muying/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/Muying.aspx" ignoreCase="true"/>
(五)、二级域名到多级域名的重写
  1. <add name="Rewrite1" virtualUrl="^http\://(.*).xianfen.net/Default.aspx"
  2. rewriteUrlParameter="ExcludeFromClientQueryString"
  3. destinationUrl="~/Default.aspx?ID=$1"
  4. ignoreCase="true" />

注意,在进行二级域名重写时要对一个地方进行重新设置:

  1. <urlrewritingnet
  2. rewriteOnlyVirtualUrls="true" 改为 false
  3. contextItemsPrefix="QueryString"
  4. defaultPage = "Default.aspx"
  5. defaultProvider="RegEx"
  6. xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >

重写规则、参数个数等等可以自己定义,还可以在运行时添加、修改重写规则,也可以扩展该组件的功能来满足形形色色的需求。具体可查看其文档和源码

asp.net 使用UrlRewritingNet.UrlRewriter组件URL重写,伪静态详解的更多相关文章

  1. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  2. “全栈2019”Java第四十九章:重载与重写对比详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

  4. 029:url标签使用详解

    url标签使用详解: 在模版中,我们经常要写一些 url ,比如某个 a 标签中需要定义 href 属性.当然如果通过硬编码的方式直接将这个 url 写死在里面也是可以的.但是这样对于以后项目维护可能 ...

  5. URL&HTTP协议详解

    本文来自公开课笔记,主要做知识的记录,谢谢! ·接口测试核心技术--URL&HTTP协议详解. ·URL: 统一资源定位符. 示例: https://ke.qq.com/course/3157 ...

  6. ASP.NET 整理比较全的URL重写解决方案

    经常有人请我指导应该如何动态地“重写”URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自 ...

  7. 使用URLRewriter实现URL重写

    优点 1)隐藏真实URL,提高安全性 2)更加友好的URL,好记(看博客园就行知道啦) 3)便于搜素引擎收录 ......... 可能的缺点 使用URL重写可能导致: 1)图片路径的问题 2)CSS路 ...

  8. Url重写——伪静态实现

    简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...

  9. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

随机推荐

  1. R 给data.frame(dataframe)添加一列

    x<-data.frame(apple=c(1,4,2,3),pear=c(4,8,5,2)) x # apple pear # 1 1 4 # 2 4 8 # 3 2 5 # 4 3 2 x$ ...

  2. [原创]VB注册机独辟蹊径-----注册机也可以这样写

    近段时间接了个项目,是关于一个称重传感器的上位机系统,需要一机一码针对不同的客户机分别注册,第一次注册完后,下次打开后不必注册. 刚开始想用正规的注册机办法去完成,搜罗了半天,发现现在大部分的硬盘注册 ...

  3. CNV

    CNV: 人类主要是二倍体.如果有些区域出现3个.4个拷贝,那就是扩增了,如果只出现1个拷贝,就是缺失.所以CNV分析是依靠特定位置的测序深度来估算的,先在染色体上划窗,然后看每个窗口的平均测序深度, ...

  4. SQL——存储过程实例 循环

    --循环 create or replace procedure p_xunhuan(input in number,output out number) is ); begin ; ..input ...

  5. STL--list

    List-概述: 列表List是一个线性链表结构(Double—Linked Lists,双链表),它的数据由若干个节点构成,每一个节点都包括一个信息块Info(即实际存储的数据).一个前驱指针Pre ...

  6. yii CDbCriteria 类的总结

    在编程中,我们通常会需要查询些东西,但是通过查询的时候,yii有个集成的类--- CDbCriteria():通过该类,我们可以更加便捷的调用数据. 参考网址:http://www.cnblogs.c ...

  7. C++ ASSERT() 断言机制

    C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...

  8. (二)miller指导查看主控板寄存器操作

    Welcome to Command Shell!Username:admin Password:***** ROS>en ROS# ROS# ROS# ROS# ROS#^ada ROS(ad ...

  9. nyoj 28 大数阶乘

    题目链接:nyoj 28 就是个简单的高精度,只是一开始我打表超内存了,然后用了各种技巧硬是把内存缩到了题目要求以下(5w+kb),感觉挺爽的,代码如下: #include<cstdio> ...

  10. Java 获取各时区时间,获取当前时间到格林威治时间1970年01月01日00时00分00秒的秒数

    格林威治时间即UTC/GMT时间,1970年01月01日00时00分00秒(即UTC+8的北京时间1970年01月01日08时00分00秒)计算代码如下: /** * 获取指定时间到格林威治时间的秒数 ...