zoukankan      html  css  js  c++  java
  • 完美实现 ASP.NET 2.0 中的URL重写伪静态(映射) >(转载)的简介与内容

    完美实现 ASP.NET 2.0 中的URL重写伪静态(映射

    URL重写好处有很多,如有利于SEO、便于记忆、隐藏真实路径使安全性提高、便于更新等等。本文概要描述了各种URL重写的实现。
    ASP.NET 2.0 中实现URL重写有很多方法,如:Global.asax中捕获用Application_BeginRequest请求,再用HttpContext类 的Rewrite方法或Server.Transfer方法实现重写;自己实现IHttpModule实现重写;还有的利用服务器的404错误引导到新的 页面实现重写;最后就是用组件实现重写(基本原理大多也是实现IHttpModuleIHttpHandler接口处理请求)
    如果自己处理请求,实现起来麻烦,特别是在大项目中,做好使用组件实现。网上有很多开源或免费的实现URL重写的组件,选择余地特别大。当初我选择的标准是小巧、快速、实现常用的URL重写功能。经过比较选择了只有32KB大小的
    查看其文档主要功能有以下一些: 

    1.基于正则表达式的重写
    2.支持Themes和母版页
    3.支持输出缓存
    4.支持信任级别为"Medium"的使用环境
    5.支持Postback
    6.支持无CookieSession
    7.运行时添加、修改改写规则
    8.容易安装使用


    OK!功能完全够用,就选他了!

    Web.config中的配置: 

    <configuration> 
    <configSections> 
    <section name="urlrewritingnet"   
    requirePermission ="false" 
    type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter"  /> 
    </configSections> 
    <urlrewritingnet 
    rewriteOnlyVirtualUrls="true"   
    contextItemsPrefix="QueryString" 
    defaultPage = "Default.aspx" 
    defaultProvider="RegEx" 
    xmlns="http://www.urlrewriting.net/schemas/config/2006/07" > 
    <rewrites> 
    <add name="RewritePhoto" virtualUrl="^~/(d+).aspx" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" /> 
    <!--更多重写规则--> 
    </rewrites> 
    </urlrewritingnet> 
    <appSettings/> 
    <connectionStrings/> 
    <system.web> 
    <httpModules> 
    <add name="UrlRewriteModule" 
    type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> 
    </httpModules> 
    <!-- 
    设置 compilation debug="true" 将调试符号插入 
    已编译的页面中。但由于这会 
    影响性能,因此只在开发过程中将此值 
    设置为 true。 
    --> 
    <compilation debug="true" /> 
    <!-- 
    通过 <authentication> 节可以配置 ASP.NET 使用的 
    安全身份验证模式, 
    以标识传入的用户。 
    --> 
    <authentication mode="Windows" /> 
    <!-- 
    如果在执行请求的过程中出现未处理的错误, 
    则通过 <customErrors> 节可以配置相应的处理步骤。具体说来, 
    开发人员通过该节可以配置 
    要显示的 html 错误页 
    以代替错误堆栈跟踪。 

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
    <error statusCode="403" redirect="NoAccess.htm" /> 
    <error statusCode="404" redirect="FileNotFound.htm" /> 
    </customErrors> 
    --> 
    </system.web> 
    </configuration>


    测试用的文件:Default.aspx

    <%@ Page Language="C#" %> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
    <title>URL 重写测试 飘遥 http://.net</title> 
    </head> 
    <body> 
    <form id="form1" runat="server"> 
    <div> 
    <% 
    Response.Write("原始URL:" + Request.RawUrl + "<br />"); 
    Response.Write("获取的ID:" + Request.QueryString["ID"]);         
    %> 
    </div> 
    </form> 
    </body> 
    </html>


    ()、扩展名不变的重写:
    重写规则: 

    <add name="RewritePhoto" virtualUrl="^~/(d+).aspx" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" />

    IIS配置:(此配置应该为默认配置,但有的虚拟主机提供商修改了此配置)
    网站->属性->目录->配置(G)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选
    运行结果:


    ()、伪静态重写,扩展名为.html
    重写规则:

    <add name="RewritePhoto" virtualUrl="^~/(d+).html" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" /> 

    IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
    可执行文件:c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll
    扩展名:.html
    动作:限制为 GET,HEAD,POST,DEBUG
    脚本引擎:选中
    确认文件是否存在:不选
    运行结果:


    ()、任意扩展名的重写 如:扩展名为.zxjay
    重写规则: 

    <add name="Rewrite1" virtualUrl="^~/(d+).zxjay" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" />   


    IIS配置:同上
    运行结果:


    ()、无后缀的重写
    重写规则: 

    <add name="Rewrite1" virtualUrl="^~/(d+)/Default.aspx" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" />


    IIS配置:网站->属性->目录->配置(G)...->映射->通配符应用程序映射->插入
    可执行文件:c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll
    确认文件是否存在:不选
    如图:

    其原理是:请求"当前目录"时,查找默认文档,实现重写,因此重写规则中的"^~/(d+)/Default.aspx"要与第一个默认文档相对应。
    指正,谢谢!)
    重写规则: 

    <add name="Rewrite1" virtualUrl="^http://(.*).xianfen.net/Default.aspx" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/Default.aspx?ID=$1" 
    ignoreCase="true" />

    iis7,iis7.5下伪静态页面配置方法!

    来源:本站原创 作者:DLL下载家园 更新时间:2010-12-26 

    使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆。但在windows 2008 +iis7.0windows 7+iis 7.5 环境下配置的网站基本上没有。偶尔有几篇也没有把问题说清楚!本人也按部就班的做了。伪静态的功能是实现了,但是新的问题出来了,整个站点的图片和样式全部乱了。 

      以前在windows 2008 +iis7.0也遇到了这个问题。网都翻破了没有找到解决办法。后面不知道当时是怎么回事,瞎猫碰到死耗子,被我配对了。事隔半年后要在windows 7+iis 7.5URLRewriter组件下配置伪静态,也是弄了好几天没有弄出来。今天也是瞎猫碰到死耗子终于配置出来了。现在马上记录下来,免得下次又忘记了。此法在windows 2008 +iis7.0windows 7+iis 7.5下都实用。 

      第一部从如下任一地址中下载URLRewriter组件组件: 

      下载地址1http://download.csdn.net/source/524514 

      下载地址2http://www.nmju.net/UserFiles/URLRewriter.rar 

      下载地址3http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi 

      第二部:在网站项目中添加URLRewriter程序集的引用。 

      第三部:配置webconfig文件: 

      1。在<configuration></configSections>节点中间加入如下配置: 

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

      2。 在<httpHandlers></httpHandlers> 

      之间加入 

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

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

      3。在<httpModules></httpModules>加入 

      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="

    ;ModuleRewriter"/>。 

      4。配置伪静态的语法:在<configuration></configuration>之间加入<RewriterConfig> 

      </RewriterConfig>节点。在<RewriterConfig></RewriterConfig>之间加入伪静态规则: 

      <Rules> 

      <!--定义伪静态第一条规则开始--> 

      <RewriterRule> 

      <LookFor>~/xxxx/view(.[d]*).html</LookFor> 

      <SendTo>~/xxxx/view.aspx?id=$1</SendTo> 

      </RewriterRule> 

      <!--定义伪静态第一条规则结束--> 

      <!--定义伪静态第二条规则开始--> 

      <RewriterRule> 

      <LookFor>~/yyyy/(.[d]*)/view.html</LookFor> 

      <SendTo>~/yyyy/view.aspx?id=$1</SendTo> 

      </RewriterRule> 

      <!--定义伪静态第三条规则结束 以此类推--> 

      </Rules> 

      第四部:配置IIS7.5 IIS7.0 

      1.新建一个应用程序池:名称:任意如:webapp;选择net FrameWork版本(如果你的网站时候2.0的话就选择2.0,我的是4.0)在此我选择Net FramWork v 4.030319. 托管管道模式先暂时设置为集成模式。等下面的设置完成之后再将托管管道模式设置为经典模式。如果下面的设置完成之后不把应用程序设置为经典模式的话,伪静态的功能可以实现,但是页面的样式图片不能正常显示这是设置的关键。 

      新建一个网站 website ,将此站点的应用程序程序池设置为webapp。 

      选中你的站点比如website ,并且切换到功能视图。双击【处理程序映射】在打开窗口右侧的操作栏目下做如下操作。 

      3.1,【添加脚本映射】-路径为:*.html.可执行文件为:C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_isapi.dll 注意:如果你的网站是2.0。可执行文件为:C:WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll 。名称:任意,比如:html. 

      3.2, 【添加通配符脚本映射】 请求路径为*。可执行文件和3.1的一模一样,名称任意,比如:All. 

      3.3,【托管处理程序映射】(路径:可执行文件:System.Web.UI.PageHandlerFactory 名称 任意 比如Html-Integrate) 

      3.4, 双击website站点切换到站点功能视图。然后双击模块,打开窗口之后在右侧的操作栏目下面,单击【添加托管模块】-》名称:任意 如All 类型:URLRewriter.ModuleRewriter 并且 把【仅针对向asp.net 应用程序或托管处理程序发出请求调用】前面的选项 勾上。(记住一定要勾上)。 

      3.5 ,最后一步:双击iis7.07.5的应用程序池。在应用程序池列表中找到【webapp】应用程序池。双击打开之后。将webapp应用程序池的【托管管道模式】设置为经典模式。

  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/guozhenyp/p/2168361.html
Copyright © 2011-2022 走看看