目录

  • 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,如下
<configSections>
<section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"/>
</configSections>
b.在 <system.web>节点下配置如下内容
 <httpModules>
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
</httpModules>

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

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

五, 重写规则

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

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

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

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

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

 <urlrewritingnet
rewriteOnlyVirtualUrls="true" 改为 false
contextItemsPrefix="QueryString"
defaultPage = "Default.aspx"
defaultProvider="RegEx"
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. [HDOJ2717]Catch That Cow

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. VSFTP基线安全

    在企业级的应用中,越来越多的企业应用开源的vsftpd软件来搭建自己的文件共享服务,优点是速度快且节省开支.然而,企业用户行为难以预料,配置稍有不当则会使该服务成为一个安全风险点,导致带宽恶意占用.用 ...

  3. python_way day6 反射,正则 模块(进度条,hash)

    python_way day6 反射 正则 模块 sys,os,hashlib 一.模块: 1.sys & os: 我们在写项目的时候,经常遇到模块互相调用的情况,但是在不同的模块下我们通过什 ...

  4. iOS案例:读取指定txt文件,并把文件中的内容输出出来

    用到的是NSString中的initWithContentsOfFile: encoding方法 // // main.m // 读取指定文件并输出内容 // // Created by Apple ...

  5. hdu 5673 Robot 卡特兰数+逆元

    Robot Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem D ...

  6. HTML笔记(二) 在HTML中使用CSS

    外部CSS: <head> <link rel="stylesheet" type="text/css" href="mystyle ...

  7. 编码实现Spring 利用@Resource注解实现bean的注入,xml实现基本数据类型的注入

    首先分析. 1: 肯定要利用dom4j读取xml配置文件,将所有的bean的配置信息读取出来 2: 利用反射技术,实例化所有的bean 3: 写注解处理器, 利用注解和内省实现依赖对象的注入. 4: ...

  8. CodeBlocks使用技巧

    快键键 注释:选中后Shfit + C 取消注释:选中后Shfit + X 查找替换:Ctrl + R Build(Ctrl + F9) Run (Ctrl + F10) Build + Run (F ...

  9. 高处胜寒 php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

    <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一 ...

  10. css+JS实现遮罩弹框

    <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta nam ...