URL重写(使用微软URLRewriter)

   一、使用URL重写的优点:

      1、满足搜索引擎的要求。某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被用户搜索到。因此把网站地址改成静态的绝对地址是很有必要的。

      2、隐藏技术实现。 有些网站挂着.asp、.jsp开发语言的标记,让人一眼就看出使用什么语言开发的。使用URL重写技术就可以实现地址的隐藏。提高安全性。

      3、更加友好的地址,让用户能很好的记住。

  二、使用URL重写的缺点:

        1、性能有所损耗。

     2、处理图片路径或者是CSS路径等,会比较麻烦。

          比如:http://www.Test.com/Wordhttp://www.Test.com/Word.html都是通过url重写定位到同一个页面http://www.Test.com/Word/One.aspx ,都是用同样的处理程序,唯一不同的是为了处理http://www.Test.com/Word这样没有扩展名的地址他必须将*.*映射到aspnet_isapi.dll,而http://www.Test.com/Word.html则是将*.html映射到aspnet_isapi.dll,结果发现http://www.Test.com/Word.html的性能比http://www.Test.com/Word好十至二十倍,因为*.*就是该页面所有的请求,包括css文件和所有的图片文件都有用他写的url重写处理程序去处理,*.html则没有,只是一个请求,问题就出现在这里了,如果http://www.wodecity.com/food这个页面图片很多的话,请求一个页面要同时用url重写处理程序去处理那么多图片,能不慢吗?当然是有处理的方法的。方法1,把存放图片所在的文件夹转化成一个虚拟目录,在然后移处该虚拟目录*.*的映射,这样一来他的url重写程序就不会去处理图片文件,当然存放别的不需要url重写程序的文件也要象图片文件夹做类似的处理,方法2,新建一个站点,如用http://img.wodecity.com/存放图片文件,原理是一样的,都是让你的url重写处理程序不处理那些图片文件。

 

  三、使用URL的方法:

     1、下载安装MSDNURLRewriting.msi。

          开源代码http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi,下载下来后编译一下就可以了。编译后得到URLRewriter.dllActionlessForm.dll两个Dll。

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

     在<configuration>下面添加一段代码:

 

<configSections> 

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

</configSections>

     

 

在<system.web>下面添加一段代码:

 

<httpHandlers> 

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

</httpHandlers> 

 

 

            在<system.web>下面添加一段代码:

  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/index.html</LookFor>
        <SendTo>~/Index.aspx</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/(/d+)-(.*).html</LookFor>
        <SendTo>~/Products/ProductsList.aspx?id=$1&amp;SelectValue=$2</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/(/d+)/(.*).html</LookFor>
        <SendTo>~/Products/ProductsDetails.aspx?ID=$1&amp;CASNO=$2</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

       其中LookFor是地址栏显示的地址,SendTo是真实的反问地址。当页面带有多个参数的时候,如第一个用$1来表示,第二个用$2来表示,以此类推,而参数于参数中的链接符由"&"改为"&amp;"。LookFor中的(/d+)这些就是正则表达式的写法了。

       在页面中的链接也就要修改了,比如<a href="products/productsList.aspx?id=111&SelectValue=a">产品列表</a>就需要修改为<a href="111-a.html">产品列表</a>。

 

  四、回发处理

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

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

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

 

      4.打开IIS中的文件的属性==》虚拟目录==》配置==》添加。在可执行文件中输入:C:/WINDOWS/Microsoft.NET/Framework/v1.1.432/aspnet_isapi.dll;在扩展名输入*.Html;将确认文件是否存在去掉,点击确定。

五、静态页面调用。

在反问真正的html文件时,避免找不到文件报错,比如:要反问Link.html这个文件时,链接为www.test.com/Link.html,会出现没有为扩展名“.html”注册的生成提供程序。可以在 machine.config 或 web.config 中的 <compilation><buildProviders> 节注册一个。请确保所注册的提供程序具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 属性

这个错误。

在这个里面处理一下就可以了

 

     

<compilation defaultLanguage="c#" debug="true">
    
<assemblies>
        
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
<!-- 加上此节点,保证原本就是.html类型的文件能正常访问 -->
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
    
</compilation>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值