本系列目录

因为在网上搜到了很多这方面的文章,而且UrlRewrite中SEO中的重要性也在逐步下降,所以这一节我就写得简单一些。以下是几个重点:

1.UrlRewrite,顾名思义,只是针对URL进行的重写操作,不要认为www.freeflying.com/Jack/articles-2467.html就真的对应着一个html文件:articles-2467.html;实际上,该链接真正对应的是www.freeflying.com/articles.aspx?author=Jack&id=2467。所以,以前有人把这种技术称之为“伪静态”;当然,既然有“伪”,也就有真,那就是用IO操作,真正的根据用户输入、数据库查询之类的,生成一个html文件。这种技术,不再本系列讨论范围之类(且个人认为,价值不大)。

2. 要将www.freeflying.com/Jack/articles-2467.html 转化成 www.freeflying.com/articles.aspx?author=Jack&id=2467,肯定不能在我们习惯的页面事件中完成。因为如果不经过转换,我们根本无法到达www.freeflying.com/articles.aspx页面,链接会直接指向www.freeflying.com/Jack/articles-2467.html,在那里,也没有articles-2467.html文件,我们只能得到一个404错误。所以,转换工作将在“应用程序生命周期”中完成。

具体的实现方式有两种:Global.asax和HttpModule;但他们都采用了同一个方法:RewritePath()。

对于应该选择Global.asax还是HttpModule,有很多人都认为,HttpModule 效率更高,但我无法理解。按照msdn的说法,“如果我们创建了Global.asax文件,该文件将会被编译成一个HttpApplication派生类,并由该HttpApplicant派生类代替默认的HttpApplication实例,用以维护application。当 HttpApplication实例被创建的同时,在web.config中注册的所有HttpModule也会被创建;再然后,HttpApplication的Init()方法被调用。”“HttpApplication实例维护一个pipeline,用以依次对 request请求进行验证、缓存等处理”,而比较常用的有BeginRequest事件(在UrlRewrite中就是调用的该方法),ProcesRequest()方法(HttpHandler中必须实现的方法)。所以,我认为,HttpApplication(包括 Global.asax文件)“包含”了Application事件、HttpModule和HttpHandler的“容器”。无论把代码写在 Global.asax还是HttpModule中,性能是一样的。
3. 如代码所示,如果仅有一个或几个转换,我们可以使用if之类的表达式,如果是成千上万个转换,我们怎么办?而且事实的确如此,可以想象,id应该就是数据库里某个表的自增长字段。有没有一种自动化的处理机制,使得我们可以让程序智能化的进行URL的转换?有,就是大名鼎鼎的正则表达式。我们下一节专节进行讲解。

最后,是我找到的一些很好的参考链接:

UrlRewrite还有必要么?Google的官方解释

asp.net4.0中的“URL Routing”,据说能实现和URL Rewrite一样的功能

园子里老赵的博客,UrlRewrite的实现机制

还是老赵,估计是被SEOer气疯了之后写的一篇博客

ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法的更多相关文章

  1. ASP.NET MVC5基础 - Global.asax详解

    简介 作用 Global.asax的处理事件 实例说明 总结 简介 Global.asax是一个文本文件,它提供全局可用代码.这些代码包括应用程序的事件处理程序以及会话事件.方法和静态变量.有时该文件 ...

  2. Global.asax和HttpModule的执行顺序

    Application_Start-->用户自定义的HttpModule-->Application_BeginRequest   (注册->调用) 看到Init方法(在用户自定义的 ...

  3. ASP.NET + MVC5 入门完整教程四---MVC 中使用扩展方法

    https://blog.csdn.net/qq_21419015/article/details/80433640 1.示例项目准备1)项目创建新建一个项目,命名为LanguageFeatures ...

  4. ASP.NET的SEO:目录

    ASP.NET的SEO:基础知识 ASP.NET的SEO:Global.asax和HttpModule中的RewritePath()方法--友好的URL ASP.NET的SEO:正则表达式 ASP.N ...

  5. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  6. ASP.NET中Global.asax 文件是什么?

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  7. ASP.NET Global.asax详解【转】

    global.asax是一个文本文件,它提供全局可用代码.这些代码包括应用程序的事件处理程序以及会话事件.方法和静态变量.有时该文件也被称为应用程序文件. global.asax 文件中的任何代码都是 ...

  8. Global.asax 文件说明

    引用 来自  http://www.cnblogs.com/jianshao810/archive/2011/02/03/1948912.htm 在网上找了N多相关的东西总说的不够细,现在终于找到了. ...

  9. Global.asax 详解

    在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...

随机推荐

  1. PLSQL_性能优化系列19_Oracle Explain Plan解析计划通过Profile绑定

    20150529 Created By BaoXinjian

  2. HTML5与HTML4的区别

    一.推出的理由及目标 web浏览器之间的兼容性很低 文档结构不够明确 web应用程序的功能受到了限制 二.语法的改变 内容类型 文件扩展名html htm  内容类型 texthtml   二者不变 ...

  3. SqlServr进程内存使用增长的解决办法

    SqlServr进程使用的内存缓慢增长是正常的现象,但在服务器长时间不重启或sql服务不重启的情况下,最终,这个进程会耗尽所有的内存,导致所有终端无法正常与数据库交互. 1.设置数据库最大使用内存的值 ...

  4. eclipse的shell相关插件

    1.Easy Shell a. 功能 可以在Eclipse IDE里选中一个文件或目录,利用Easy Sehll直接跳转到Sehll窗口,很方便 b. 安装 Help - Install New So ...

  5. Mac下配置JAVA_HOME

    http://blog.csdn.net/shallowgrave/article/details/39367119 闲来无事,装个Hbase玩玩,突然发现Mac下默认安装的JDK7,没有配置JAVA ...

  6. Android的所有权限说明

    Android权限分的很细,但命名比较人性化,Android permission比SymbianCapabilities有了不少改进,下面就来看看权限许可都有哪些定义吧,发现还是比较繁多的,如果发现 ...

  7. java从控制台读取数据的方式

    1. Scanner sc = new Scanner(System.in); String s = sc.readLine(); 2. BufferReader br = new BufferRea ...

  8. [DataTable]控件排序事件中用DataView及DataTable排序

    控件排序事件中用DataView及DataTable排序 文章分类:.net编程 在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridVi ...

  9. Python的安装与基本语法

    一,Python简介      Python是一种计算机程序设计语言,都是使用C语言实现,但是比C语言容易学习,易于阅读.Python可以应用于众多领域,整体呈上升趋势,广泛使用Python来做的事一 ...

  10. poj 1018 Communication System

    点击打开链接 Communication System Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21007   Acc ...