ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法

简介: 本系列目录  因为在网上搜到了很多这方面的文章,而且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。

本系列目录

 

因为在网上搜到了很多这方面的文章,而且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气疯了之后写的一篇博客
相关文章
|
25天前
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
38 0
|
8月前
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
7月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
613 0
|
7月前
|
Java
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
已解决Java.net.MalformedURLException异常的有效方法java.net.MalformedURLException: no protocol异常处理
367 0
|
26天前
|
安全 数据库 数据安全/隐私保护
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法
七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法
|
8月前
|
JavaScript 前端开发 安全
[HackerScreenSaver]退出屏保前玩一把游戏吧!webBrowser中网页如何调用.NET方法
本文主要以 HackerScreenSaver 新功能的开发经历介绍 webBrowser中网页如何调用.NET方法的过程。
34 0
[HackerScreenSaver]退出屏保前玩一把游戏吧!webBrowser中网页如何调用.NET方法
|
11月前
|
C#
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
125 0
分享一个.net 基于QRCoder包生成二维码的方法,
最近项目中需要生成二维码,找了很多包,最好还是感觉QRCoder包最好用,下面发出来分享给大家
105 0
|
消息中间件 监控
十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法
搭建RabbitMQ简单通用的直连方法 如果还没有MQ环境,可以参考上一篇的博客: https://www.cnblogs.com/weskynet/p/14877932.html
613 0
十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法