当前位置:编程学习 > Web> 正文

ASP.NET URLRewriter伪静态

时间:2013-12-22类别:编程学习

ASP.NET URLRewriter伪静态

ASP.NET URLRewriter伪静态

使用伪静态的作用

(1)增强URL的友好性,方便用户记忆URL。

(2)提高搜索引擎抓取,很多搜索引擎更看好静态HTML页。

(3)加强安全性,因为隐藏了参数"year"、"month"、"day"、"id",使网站没有那么容易受到攻击。

 

伪静态实现的基本思路

(1)自定义HttpHandler类,实现IHttpHandler接口

(2)获取用户请求的URL地址信息

(3)定义多个正则表达式规则,匹配URL字符串

(4)重定向真实的URL地址信息

 

使用微软的URLRewriter.dll实现页面的伪静态

 

第一步:添加 UrlRewriter.dll 到 bin目录中

 

第二步:在web.config文件中进行配置


1、先加入一个section节

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

    2、然后加入一个模块httpMoudles,为 URL 重写引擎指定配置信息

     

  • 
    <system.web>
    ........
    <httpModules>
    <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
    </httpModules> 
    
    		
  •  

    3、加入httpHandlers字节

  • 
    
    <system.web>
    ........
    <httpHandlers>
        <!--使用URLRewriter.dll    -->
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    
    </httpHandlers>
    
    		
  •  

    注意节的位置 <system.web>与<configSections>两个节是平级的,再加入规则

     

     规则的形式为:

  • 
    <RewriterConfig>
       <Rules>
       <RewriterRule>
          <LookFor>要查找的模式</LookFor>
          <SendTo>要用来替换模式的字符串</SendTo>
       </RewriterRule>
       <RewriterRule>
          <LookFor>要查找的模式</LookFor>
          <SendTo>要用来替换模式的字符串</SendTo>
       </RewriterRule>
       </Rules>
    </RewriterConfig>
    			

     

  •  

    伪静态规则的备注

     

    每个重写规则均由 <RewriterRule> 元素表达。要搜索的模式由 <LookFor> 元素指定,而要替换所找到的模式的字符串将在 <SentTo> 元素中输入。这些重写规则将从头到尾进行计算。如果发现与某个规则匹配,URL 将被重写,并且对重写规则的搜索将会终止。

    在 <LookFor> 元素中指定模式时,请注意,要使用正则表达式来执行匹配和字符串替换。(稍后,我们将介绍一个真实的示例,说明如何使用正则表达式来搜索模式。)由于模式是正则表达式,应确保转义正则表达式中的任何保留字符。(一些正则表达式保留字符包括:.、?、^、$ 及其他。可以通过在前面加反斜杠(如 \.)对这些字符进行转义,以匹配文字句点。)

     

    上面的代码总结

  •  
  • XML 代码   复制
  • 
    <?xml version="1.0"?>
    <configuration>
      <!--使用URLRewriter.dll -->
    <configSections>
      <section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
    </configSections>
    
    <RewriterConfig>
      <Rules>
        <RewriterRule>
          <LookFor>~/detail/([0-9]*)/([0-9]*).html</LookFor>
          <SendTo>~/admin/detail.aspx?type=$1&amp;id=$2</SendTo>
        </RewriterRule>
      </Rules>
    </RewriterConfig>
    
    <system.web>
      <httpHandlers>
        <!--使用URLRewriter.dll    -->
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
    
    </httpHandlers>
        <compilation debug="true" targetFramework="4.0"/>
      </system.web>
    </configuration>
    
    		
  •  

    IIS对伪静态的配置

    在IIS中找到自己的网站,点属性,然后找主目录中的配置,然后弹出应用程序配置对话框,选择添加,添加的可执行文件路径为c:\windows \microsoft.net\framework\v2.0.50727\aspnet_isapi.dll。

    上一篇下一篇

    猜您喜欢

    热门推荐