URL重写技术总结

概要:什么是url重写?

URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。比如浏览器发来请求 hostname/101.html ,服务器自动将这个请求中定向为http://hostname/list.aspx ?id=101。

url重写的优点在于:

1、缩短url,隐藏实际路径提高安全性。

2、易于用户记忆和键入。

3、易于被搜索引擎收录。

正文:实现url重写的基本方法:

一、 下载ms的URLRewriter.dll,放到你的web程序的bin下

下载地址1:

download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

下载地址2:

或者直接使用DLL:http://files.cnblogs.com/yun_shuai/URLRewriter.rar 含有上面2个DLL。

二、 webconfig中配置:

1、 <configSections> 节点中增加:

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

注:一定要正确,名字(RewriterConfig)要与下面的重写名称<RewriterConfig>一致。

2、<configuration>根节点中增加URL重写的配置:  可以使用正则表达式

<RewriterConfig>  <Rules>

<RewriterRule>    <LookFor>~/ (\d{2})/(\d+)\.html</LookFor>    <SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>   </RewriterRule>

<RewriterRule>    <LookFor>~/(\d+)\.html</LookFor>    <SendTo>~/ShowBlogContent.aspx?year=$1</SendTo>   </RewriterRule>  </Rules>

</RewriterConfig>

注:每一个URL都要有头 ( <RewriterRule>),有尾(</RewriterRule>)。

多参数直接用&相连接,切勿只用&!

尽量用少的语句,重写多的页面URL。

关键句解析:

“<LookFor>~ShowBlog/(\d{2})/(\d+)\.html</LookFor>  <SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>”

①、<LookFor>~ ShowBlog /(\d{2})/(\d+)\.html </LookFor> 表示,用户请求的url(ShowBlog可任意写)。~/(\d+)\.html是url中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,{2}表示数字的位数是两位,并以.html结尾。用户也可根据自己的需要自行设定)。 ②、<SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问ShowBlogContent.aspx并传入参数year和month,其值$1将用用户请求的文件名中的第一个数(\d{2})字来表示,$2为第二个数字(\d+),多参以此类推。 ③、例如用户输入 hostname/d11.aspx,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http://hostname/d11.aspx,实际访问的是http://hostname/default.aspx?id=11。这样就起到了隐藏真实文件名,并便于用户记忆的作用。

注:也可以不用带参数,原理同上。

例:“<LookFor>~ShowBlog.html</LookFor>  <SendTo>~/ShowBlogContent.aspx</SendTo>”

3、<httpModules> 增加   <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />

或者   <httpHandlers> 增加   <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

注:这是对以.html结尾的URL进行匹配重写(编者更倾向于第二种方法)。

4、修改页面中的请求路径URL

例:“<a href=" ShowBlog /<%=Request["BlogType"] %>/<%#Eval("BlogID") %>.html">”

5、完成

6、其他问题:

回发后真实路径再现:

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

2、在aspx网页的代码中加<%@ Register TagPrefix="RW" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

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

注:编者暂时没有用到,读者可以根据个人需要自行修改。

三、总结

首次重写URL的时候一定要每一个细节都要考虑到,特别是路径的问题,读者应该有足够的耐心和细心,这样才能使自己的努力事半功倍。

编者参考网址:

1、 伪静态实现方法_百度文库

2、 使用URLRewriter实现URL重写 - 云帅工作室 - 博客园

3、 ASP.NET URL Rewrite. URL重写_Karl’s 备忘录_百度空间

4、 谈用伪静态(url重写)的方法替代生成静态页面的好处 - A5站长网

四、附:详情见源代码。

URL重写技术总结的更多相关文章

  1. url重写技术

    URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.aspx ,服务器自动将这个请求中定向为http://hostname/li ...

  2. 伪命题:PHP识别url重写请求

    手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.ht ...

  3. ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置

    核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有 ...

  4. URL重写的优缺点分析

    如何增强您网站地址的可读性.如何让搜索引擎快速收录到您的站点,这就需要优化您的Url,即Url的重写技术,大家熟悉的可能有很多服务器都提供Url重写技术,以前我们用的最多的就是Apache,Jboss ...

  5. 关于URL重写

    1.  为什么要使用url重写? 先从session的原理讲起,为什么我们能够获得session中的东西呢?如果没有禁用cookie的话,那么session创建之后,会将session id的值通过r ...

  6. nginx URL重写

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  7. URL重写中的中文参数问题

    在做搜索功能时,需要输入关键字,如果搜索出来的结果很多,又需要分页.这里用URL重写技术(即href="?keyword=关键字&page=分页数"),就涉及到了传递中文关 ...

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

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

  9. nginx的url重写

    1.1 简介 url重写由ngx_http_rewrite_module模块提供,默认会安装,但该模块功能的实现需要pcre.URL重写技术不仅要求掌握几个指令的语法.熟悉简单的正则表达式,还需要尽量 ...

随机推荐

  1. Linux重启与关机命令

    重启命令 reboot shutdown -r now 立即重启 shutdown -r 10   十分钟后重启 shutdown -r 17:00 在17:00重启 关机命令 halt 立即关机 p ...

  2. tomcat开启远程调试

    tomcat开启远程调试模式: 需要在启动脚本中的 JAVA_OPTS='-server -Xms1024m -Xmx1024m -Xmn384m -Xss256k -XX:PermSize=128m ...

  3. 爬虫实战【6】Ajax内容解析-今日头条图集

    Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). Ajax并不是新的编程语言,而是一种使用现有标准的新方法,当然 ...

  4. 宇视4G设备采用GB/T28181协议成功接入EasyGBS国标流媒体平台的设置流程

    经过了多天的调试对接,终于将宇视的布控球顺利接入到了EasyGBS的国标平台,特地写一下对接过程中遇到的问题,希望能帮助大家避开一些麻烦: 第一步:电脑连接无线网络IPCWIFI,密码12345678 ...

  5. 简单的 ajax demo

    2.最重要也是最核心的是要自己改下bootstrap-paginator.js源文件,如下: [javascript] view plain copy      function oneferRepo ...

  6. 2015-02-09——js笔记

    示例1: 增加样式表 示例代码: function addStylesheet(url, media) {                var link = document.createEleme ...

  7. Js用户引导插件intro

    1.demo直接贴上来了,有什么不懂的,直接去官网上看,地址:https://introjs.com/. 2.这个intro插件的版本是v2.7.0,复制下来代码,引入库应该直接可以运行. 3.点评一 ...

  8. SUBMIT RM07DOCS【MB51】 获取返回清单,抓取标准报表数据

    *&---------------------------------------------------------------------* *& Report YT_SUBMIT ...

  9. springboot springmvc 支持 https

    Spring Mvc和Spring Boot配置Tomcat支持Https 背景 最近在项目开发中需要让自己的后端Restful接口支持https,在参考了很多前辈们的博客后总结了一些. Spring ...

  10. Python学习笔记1_初识Python

    一.Python的发展 1.CNRI时期:CNRI是自助Python发展初期的重要单位,Python1.5版之前的成果大部分都在此时期内完成 2.BeOpen时期:Guido van Rossum与B ...