`
yanyanquan
  • 浏览: 453236 次
  • 性别: Icon_minigender_1
  • 来自: 江门
社区版块
存档分类
最新评论

利用URLRewriter.dll 实现ASP.NET实现伪静态

阅读更多

大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。

结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。那么接下来我们来看看如何配置他吧

首先、我们要用到URL重写组件:URLRewriter.rar

其次、需要在WEB.CONFIG里面进行些设置:

1、在Web.Config的<system.web>和</system.web>添加以下节点:

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

2、在Web.Config的<configuration>和</configuration>添加以下节点:

 
 <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/d(\d+)\.html</LookFor>
        <SendTo>~/Default.aspx?MyID=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>
 

设置完以上两个步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。

 

3、配置IIS解析.html文件
IIS配置:网站->属性->虚拟目录->配置(G)...->映射->通配符应用程序映射->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名为:.html

确认文件是否存在:不选.

4、以上配置好之后就可以通过以下方式来访问了

例如用户输入 hostname/d11.html,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http://hostname/d11.html,实际访问的是http://hostname/default.aspx?id=11

 

 

5、分页必须引用以下方法

ActionlessForm.dll

namespace ActionlessForm
{
    public class Form : System.Web.UI.HtmlControls.HtmlForm
    {
        protected override void RenderAttributes(HtmlTextWriter writer)
        {
            writer.WriteAttribute("name"this.Name);
            base.Attributes.Remove("name");
            writer.WriteAttribute("method"this.Method);
            base.Attributes.Remove("method");
            this.Attributes.Render(writer);
            base.Attributes.Remove("action");
            if (base.ID != null)
                writer.WriteAttribute("id"base.ClientID);
        }
    }
}

创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要 使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容:

<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 然后,将 <form runat="server">(如果有)替换为: <skm:Form id="Form1" method="post" runat="server"> 并将右边的 </form> 标记替换为:

</skm:Form>

 

成功!

 

虚拟主机

在网上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法。其实这种方法是错误的。

第一,HttpHandle是实现不了urlrewrite的;

第二Server.Transfer是标准的重定向,根本不是urlrewrite。

其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码就可以轻松实现。我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改iis,也没有权限去安装iis rewrite之类的iis插件。但是我们仍然可以轻松完成需要的功能。具体做法如下:打开global.asax.cs,定位到protected void Application_BeginRequest(Object sender, EventArgs e)。从方法名我想也能猜到它是做什么的。输入如下代码:


 

protected void Application_BeginRequest(Object sender, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl ;
string pattern = @"^(.+)default/(\d+)\.aspx(\?.*)*$";
string replace = "$1default.aspx?id=$2"if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
this.Context.RewritePath(newUrl); 

}

有了上边这段代码,我访问一个类似:.../default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:.../default.aspx?id=123。

当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在iis中注册一下,就可以实现任意后缀名的处理。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到,.net就可以帮你实现,并且这一切不需要多少的代码。

 

分享到:
评论

相关推荐

    asp.net 伪静态实现和IIS7.0配置(包含UrlRewriter.dll文件)

    ASP.NET伪静态是一种技术,它将动态网页的URL转换为静态化的HTML文件形式,从而提供对搜索引擎更加友好的URL结构,同时也能提升用户体验。在ASP.NET框架中,伪静态可以通过第三方库如UrlRewrite来实现。本文将详细...

    c#UrlRewriter伪静态(UrlRewriter.dll和Intelligencia.UrlRewriter.dll)

    最近研究了一下伪静态,网上资料确实是比较多,我经过大量的测试,现整理两种方法进行伪静态 第一种方法需引用UrlRewriter.dll,请参考Web1.config部署 第二种方法需引用Intelligencia.UrlRewriter.dll,请参考Web....

    [.net伪静态必备]ActionlessForm.dll与URLRewriter.dll

    asp.net网站伪静态开发必备动态链接库ActionlessForm.dll与URLRewriter.dll,实现重定向显示,具体教程请参见 http://www.cnblogs.com/yiranleguan/archive/2011/06/01/2066152.html

    伪静态dll UrlRewriter.dll ActionlessForm.dll

    在实际应用中,通常会将UrlRewriter的配置文件(如web.config)中添加URL重写规则,并在ASP.NET MVC应用中利用ActionlessForm处理表单提交,从而实现伪静态和简化后的MVC架构。 在进行这样的配置时,需要注意以下几...

    UrlRewriter.dll 实现URL重写

    UrlRewriter.dll实现URL重写 以及伪静态

    URLRewriter.dll 下载

    URLRewriter.dll是一个重要的组件,它主要用于实现URL重写功能,帮助开发者实现伪静态URL配置,从而提升用户体验和网站的SEO效果。本文将深入探讨URLRewriter.dll的工作原理、使用方法及其在实际项目中的应用。 一...

    URLRewriter.dll下载

    引用 .NET完美实现伪静态页面,URLRewriter.dll下载

    url重写Intelligencia.UrlRewriter.dll

    标题中的“url重写Intelligencia.UrlRewriter.dll”指的是使用Intelligencia公司开发的UrlRewriter库来实现ASP.NET应用程序中的URL重写功能。URL重写是一种优化网站技术,它允许开发者隐藏实际的URL结构,提供更友好...

    UrlRewriter.dll实现的URL重写

    总的来说,UrlRewriter.dll是ASP.NET开发中实现URL重写和伪静态页面的强大工具,通过合理的配置和规则设定,我们可以使网站更加符合SEO需求,提高用户体验,同时增强安全性。学习和熟练掌握这一技术对于提升网站性能...

    URLRewriter.dll

    URLRewriter.dll就是这样一个工具,它主要用于实现URL重写,从而帮助开发者将动态URL转化为静态或者伪静态的形式。这种技术对于提升网站的SEO(搜索引擎优化)效果、提高用户对网站的认知度以及维护网站的可读性具有...

    这才是完整的UrlRewriter.dll 20k

    UrlRewriter.dll 是一个用于实现URL重写功能的动态链接库文件,主要应用于ASP.NET环境。在Web开发中,URL重写是一种优化技术,能够帮助我们改进网站的可读性和SEO(搜索引擎优化)性能。标题提到的“这才是完整的...

    伪静态完整源码ActionlessForm.dll及URLRewriter.dll组件下载

    介绍如何使用 Microsoft ASP.NET 执行动态 URL 重写。URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。讨论实现 URL 重写的各种技术,并介绍执行 URL 重写的一些实际情况。 附带完整版源码与...

    FreeTextBox.dll和URLRewriter.dll

    FreeTextBox.dll和URLRewriter.dll是两个在ASP.NET开发中常用的组件,它们分别服务于不同的功能领域,对于构建高效、易用且优化的Web应用程序至关重要。 首先,FreeTextBox.dll是一个富文本编辑器控件,它是ASP.NET...

    伪静态 重写url URLRewriter.dll 下载

    总结来说,伪静态和URL重写是提升网站质量和SEO的重要手段,而`URLRewriter.dll`则是ASP.NET环境中实现这一目标的有力工具。正确地配置和使用它,可以为网站带来诸多益处,但也需要注意可能带来的服务器压力,做好...

    URLRewriter.dll & ActionlessForm.dll

    总之,`URLRewriter.dll` 和 `ActionlessForm.dll` 是ASP.NET环境中实现伪静态的重要工具,它们帮助开发者在保持动态功能的同时,创建更利于SEO的静态URL,提升用户体验和网站的搜索引擎可见性。在实际项目中,合理...

    FreeTextBox.dll、URLRewriter.dll

    FreeTextBox.dll 和 URLRewriter.dll 是两个在.NET开发中常用的组件。它们分别服务于不同的功能领域,对于提升Web应用的功能和性能都有重要的作用。 首先,我们来看FreeTextBox.dll。这是一个基于.NET Framework的...

    URLRewriter.rar

    URLRewriter.dll是一个用于实现URL重写的动态链接库,它允许开发者在ASP.NET环境中轻松地管理应用程序的URL结构。下面我们将深入探讨URL重写的基本概念、URLRewriter.dll的工作原理以及其在实际项目中的应用。 一、...

    ASP.NET 伪静态页面的实现

    实现ASP.NET伪静态页面,通常涉及以下步骤: 1. **引用库**:需要引入第三方库,如`ActionlessForm.dll`和`URLRewriter.dll`,其中`URLRewriter.dll`是主要的URL重写组件,而`ActionlessForm.dll`可能用于处理无...

Global site tag (gtag.js) - Google Analytics