写在前面的话:经常在浏览网页时看到类似这样的URLhttp://www.cnblogs.com/Ferry/archive/2009/06/19/1506770.html,1506770.html是实际存在的HTML文件吗?未必,这很可能是使用了【URL重写】。

一、优点

1)隐藏真实URL,提高安全性

2)更加友好的URL,好记(看博客园就行知道啦)

3)便于搜素引擎收录

.........

二、可能的缺点

使用URL重写可能导致:

1)图片路径的问题

2)CSS路径的问题

3)性能问题(看这里:http://www.cnblogs.com/csky/archive/2006/08/09/urlrewrite.html)

...........

三、下载和安装MSDNURLRewriting.msi

1、首先下载开源代码吧:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

2、下载后安装到指定文件夹(默认C:\Program Files\URL Rewriting in ASP.NET)后,用Visual Studio打开解决方案,编译项目URLRewriter和ActionlessForm,分别生成URLRewriter.dll和ActionlessForm.dll,如果你不知道这两个文件在哪儿(不大可能吧),请到项目的这个目录下找bin\Debug\;项目RewriterTester为我们提供了学习和参考的范例,可以研究下。

四、在ASP.NET项目的web.config中配置使用

1、先把URLRewriter.dll添加到网站的bin目录下吧

2、把下面一行代码添加到如图所示位置

<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>

3、将下面一行代码插入到如图所示位置

<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

4、配置重写URL

每一组

<RewriterRule><LookFor>~/C/(\d{1,6})/(\d{1,6})\.html?</LookFor><SendTo>~/Content.aspx?id=$1&CatalogID=$2</SendTo></RewriterRule>

标签表示一个用户访问时用的友好(假)URL(<LookFor></LookFor>)以及实际的URL(<SendTo></SendTo>)

<LookFor></LookFor>中的URL可以使用正则表达式,在括号中的部分可以作为实际URL参数的值,本例中“~/C/(\d{1,6})/(\d{1,6})\.html?”在URL中显示出来的将是:http://域名/C/1至6位的整数/1至6位的整数.html(或htm),而“~/Content.aspx?id=$1&amp;CatalogID=$2”中的$1表示取<LookFor></LookFor>中的第一个“()”中的值,相应的$2表示取<LookFor></LookFor>中的第二个“()”中的值,依次类推,多个之间用“&amp;”(实际就是URL中连接多个参数的“&”)间隔。

当在地址栏输入或点击某个超连接访问http://域名/C/303/168.html时,实际访问的是http://域名/Content.aspx?id=303&CatalogID=168,而在浏览器地址栏显示的是前者而非后者。

这里要注意一点,如果你想访问http://域名/C/303/168.html和访问http://域名/C/303/168.htm都是访问同一个实际地址的话,而不会出现资源未找到的提示,需要在配置文件的<httpHandlers></httpHandlers>间加这样一行代码:<add verb="*" path="*.htm" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />;从这儿也能看出<LookFor></LookFor>)中URL后面文件的扩展名需要在<httpHandlers></httpHandlers>中配置。

在页面上加超链接也要注意了,超链接也要根据配置改了

<a href="<%=ResolveUrl("index.html") %>">首页</a> (实际访问的是default.aspx)
          <a href="<%=ResolveUrl("I/158.html")%>">新闻动态</a> (实际访问的是InfoList.aspx?id=158)
          <a href="<%=ResolveUrl("C/378.html")%>" 关于我们</a> (实际访问的是Content.aspx?id=378)
          <a href="<%=ResolveUrl("C/381/167.html")%>">O,Yeah!</a> (实际访问的是Content.aspx?id=381&Catalogid=167)

对于服务器控件请求的资源,可以使用“~/文件路径及文件名”,而对于HTML控件和元素,可以使用上面的方法。

例如:在根目录下有一个文件夹images和一个文件Content.aspx,Content.aspx中用到一个OK.gif的图片,如果在Content.aspx中使用的是服务器控件Image的话,可以如下写:ImageUrl="~/images/OK.gif";如果使用的<img>,那么可以这样写:src=href="<%=ResolveUrl("images/OK.gif")%>">。这样可以解决URL重写后图片路径不正确的问题,当然还有其它方法,在此不赘述。

五、解决回发后真实路径再现的问题

(你在页面上加一个Button,运行后点下试试)

1、将ActionlessForm.dll添加到项目的bin文件夹

2、在aspx网页的代码中加<%@ Register TagPrefix="RW" Namespace="ActionlessForm" Assembly="ActionlessForm" %>(加载Page命令后面一行吧)

3、然后将form标签改为RW:Form(注意开始和结束都要改),TagPrefix可以自定义

URL重写(使用微软URLRewriter)相关推荐

  1. asp.net url 重写解决方案

    大家都知道很多网站特别是大型网站现在都用了url伪静态重写来实现用户的易用性和美观性,比如这个网站 http://www.xintaifcw.com 很明显采用了url重写,里面的所有文章内容都是用了 ...

  2. 通过自定义Module实现URl重写和登陆验证

    首先我们新建一个类库命名为Module,然后新建一个类命名为UrlRewriteModule 并且实现IHttpHandler接口代码如下 public class UrlRewriteModule: ...

  3. asp.net用url重写URLReWriter实现任意二级域名 (转)

    asp.net用url重写URLReWriter实现任意二级域名 Asp.net 用url重写(URLReWriter)实现任意二级域名 好久没有写技术文章,如果大家看不明白,就多看几篇,汗,或者,在 ...

  4. asp.net用url重写URLReWriter实现任意二级域名(续)

    asp.net用url重写URLReWriter实现任意二级域名(续) 更高级的内容看这里: http://www.cnblogs.com/notus/archive/2007/03/13/67322 ...

  5. 使用URLRewriter进行URL重写失效

    运行环境:ASP.NET 2.0 + Windows 2003 SP2       需求描述:站点中许多菜单都调用了相同的页面,通过URL参数区别不同的功能.目前客户希望进行搜索引擎优化(SEO),需 ...

  6. java urlrewriter_java url重写技术(UrlReWriter)

    现在url重写技术用的越来越广泛了,很高兴今天和各位网友分享一下: 首先我们要从网上下一个UrlReWriter jar包 现在地址进不了,我这里有一个3.0版本的,文章底有下载地址,大家可以去下载 ...

  7. 使用URLRewriter实现URL重写

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

  8. 使用UrlRewriter进行Url重写的完整解决方案[转]

    Setp 1: 下载UrlRewriter => http://urlrewriter.net/ Setp 2: 将其添加到Web项目的Bin目录下 Setp 3: 配置:打开web.confi ...

  9. asp.net 使用UrlRewritingNet.UrlRewriter组件URL重写,伪静态详解

    目录 URL重写的业务需求 ReWritingNet组件主要功能 配置IIS(IIS7/8环境下) 程序代码 重写规则 一,URL重写的业务需求 顾客可以直接用浏览器bookmark功能将页面连结储存 ...

最新文章

  1. 【Sql Server】DateBase-子查询
  2. 《中国式方案秘籍(下部)》
  3. Mybatis【配置文件】就是这么简单
  4. 推荐10款优秀的JavaScript Web UI库 框架和套件
  5. leetcode算法题--二叉搜索树与双向链表
  6. [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
  7. zigbee工业应用技术
  8. tableview直接滚动至最后一行
  9. openstack实例状态错误_Openstack虚机操作总结
  10. Hibernate-04-实体编写规范
  11. Spring MVC Formatter(数据格式化)详解
  12. windows 用户管理
  13. pd 写入数据库_使用PD创建数据库模型,并最终将sql语句导入到MySQL
  14. 小样本学习与Triplet Loss,数据增强和课程学习
  15. 卡尔曼滤波(Kalman Filtering)——(7)扩展卡尔曼滤波(EKF)一阶滤波
  16. Premiere使用教程(五)视频导出及添加视频、音频过渡
  17. 第三届太原理工大学程序设计竞赛新生赛(未完结)
  18. 想要选好群控系统! 还要先了解的群控发展史
  19. Hibernate新官网下载源码及支持jar
  20. Spring Cloud(十四):微服务灰度发布 --- Discovery

热门文章

  1. 轻雨物联网解决方案:农业物联网的市场前景分析
  2. TypeScript + React 学习render props
  3. IOS微信API异常:unrecognized selector sent to instance 0x17005c9b0'
  4. 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
  5. 回顾一下Unix哲学
  6. 第三章 第一部分 不定积分例题
  7. 讲解Java中的String几种类型
  8. spring依赖注入的基本方法及其原理
  9. 清空VS2003/VS2005最近打开解决方案记录
  10. 面试官系统精讲Java源码及大厂真题 - 23 队列在源码方面的面试题