ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法 (2)
来源:互联网 发布:java建站教程 编辑:程序博客网 时间:2024/05/20 10:56
因为在网上搜到了很多这方面的文章,而且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()方法 (2)
- ASP.NET的SEO(二):Global.asax和HttpModule中的RewritePath()方法
- 详解ASP.NET的SEO:RewritePath()方法
- ASP.NET中的Global.asax
- ASP.NET中的Global.asax以及Web应用的生命周期
- ASP.NET中的Global.asax以及Web应用的生命周期
- ASP. NET 项目中的 【Global.asax】 的 【Application_End】方法 触发问题
- ASP.NET MVC中的Global.asax文件
- ASP.NET MVC中的Global.asax文件
- ASP.NET MVC中的Global.asax文件
- Asp.net中Global.asax 的使用和事件
- Asp.net中Global.asax 的使用和事件
- Asp.net中Global.asax 的使用和事件
- Asp.net中Global.asax 的使用和事件
- Asp.net Global.asax
- ASP.NET的global.asax文件
- asp.net Global.asax文件的使用
- Asp.net Global.asax 事件的介绍
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
- ASP.NET的SEO:基础知识 (1)
- 中文SEO相关工具大全
- DIV+CSS初学者需重视的10个简单问题与技巧
- Java 代码收集
- ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法 (2)
- C++中的随机数函数
- Linux下的软链接和硬链接的不同
- SQLServer2000 驱动错 ResultSet can not re-read row data for column
- 敏捷开发中编写高质量Java代码
- uploadify scriptData参数无法传参的问题
- zoj 1292 Integer Inquiry(大数)
- 拒绝访问网络资源-处理办法
- mkisofs用法