zoukankan      html  css  js  c++  java
  • URL重写技术总结

    URL重写技术总结

    概要什么是url重写?

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

    url重写的优点在于:

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

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

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

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

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

    下载地址1

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

    下载地址2

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

    二、 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> 表示,用户请求的urlShowBlog可任意写)。~/(d+).htmlurl中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,{2}表示数字的位数是两位,并以.html结尾。用户也可根据自己的需要自行设定)。 ②、<SendTo>~/ShowBlogContent.aspx?year=$1&month=$2</SendTo>,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问ShowBlogContent.aspx并传入参数yearmonth,其值$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备忘录_百度空间

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

     

     

    四、附:详情见源代码。

     

     

     

     

  • 相关阅读:
    CLR via C#(04) 本是同根生
    CLR via C#(01).NET平台下代码是怎么跑起来的
    CLR via C#(02)基元类型、引用类型、值类型
    Mysql定期自动备份
    Extjs4 图片上传 预览
    inno setup打包应用程序
    bat批处理学习
    localhost/127.0.0.1/本机IP的区别以及端口号
    VirtualBox虚拟机上安装windows7系统
    Linux系统中Oracle11g数据库的安装与验证
  • 原文地址:https://www.cnblogs.com/azzhang/p/4051122.html
Copyright © 2011-2022 走看看