搜索引擎优化编程(二):友好的URL地址
作者:晋城网站建设 日期:2012-02-16
在前一篇文章中有位朋友的评论我觉得很有必要补充说明一下,我们看重搜索引擎优化编程并不是说不注重用户的使用。我们在考虑一个网站经营的综合因素时,对搜索引擎做一定的优化显得很有必要。有时候,是我们网站结构本身不够合理,不容易被搜索引擎收录,这样一来,搜索引擎优化句成了对站点结构本身的合理化。有的时候,我们把“蜘蛛”当作一名严格的用户来看待也许更好理解。在这里,我谢谢大家留下宝贵的时间来给我写评论,我没考虑到的我将会在后面补充,谢谢大家!好了,继续今天的话题。
友好的URL地址,很多网站做到了这一点,有些人会理解为友好的URL地址更便于用户记忆,仅此而已。事实上,这只是一个方面,它对于搜索引擎优化也有一定的好处。现在的搜索引擎收录时,对不同的地址确实不会有不同的待遇。我现在举出两个实例:
www.seoexample.com/news.aspx?id=1&page=1
www.seoexample.com/hello_world.html
类似这样的网址我们经常遇到,很显然,后者的地址更容易被我们记住。
通常我们是通过重写URL地址来做到这一点的。我暂时所知道的重写URL地址好处有:
1搜索引擎在收录时会将地址加粗显示。
这一点大家可以去试试就知道了,本来想截图,太占地方。
2隐藏真实目录。
这似乎对搜索引擎优化没有什么好处,但是对于其他方面的好处大家可想而知。
另外,这样做网页被搜索引擎收录似乎更容易一些,搜索引擎往往对静态页面更感兴趣。重写方式良好URL地址似乎更容易被“蜘蛛”理解,这点,我也没有很充分的理由,所以先不单独列作一条。
注意:重写URL地址的好处是很明显的,但是在效率方面会让你的站点有所降低,尤其是不当的重写方式,会大大地降低站点的运行效率,有的甚至会发生错误。当然,一个好的重写方式自然给站点带来的效率影响也是很小的,因此,这些影响自然就微乎其微了。
下面向大家介绍一些常用的URL重写方式(一般不喜欢贴图片,但是为了更方便地说明问题还是贴了几张)。这里需要申明一下,由于我们使用最多的还是IIS,在这里使用的均为IIS6.0,其它IIS版本如果遇到相关需要下载的软件的话请选择自己合适的版本。
1) ISAPI_Rewrite官方网站:http://www.isapirewrite.com/
IIS层次的URL重写,使用比较方便。只需要简单地修改配置文件就可以了,但是不是开源也不是免费的,试用期只有30天。我在这里只是简单的说明,有需要的朋友购买后可以去看完整的使用文档。
从官方网站下载后,请选择默认安装。在安装完成后,在安装目录找到httpd.ini,将其属性修改为可写,我们的重写规则就写在里面。当你确定你的重写规则全部写好后,可以将其又改为只读。
打开httpd.ini文件,我们在后面添加自己的重写规则。这里添加一条示例规则:
RewriteRule ^/hello-world.html$ /news.aspx?id=1
内容很简单,就是将hello-world.html重写到/news.aspx?id=1(^和$分别为规则内容的分界符)。这种方法只是简单的介绍,而且试用版只能对整个IIS配置,不可以对逐个站点配置,下面是运行效果图:
2) UrlRewriting.Net官方网站:http://www.urlrewriting.net
这是我们使用得比较多的一种URL重载的工具,开源而且使用也同样方便。在官方网站下载程序的时候下一个示例代码下来的话,使用就很容易了。一些工具,有时候不太愿意说使用方法,因为官方网站一般都没有示例代码下(没有我一定会提供)。但是有朋友更希望我提供部分演示,因为去下示例麻烦,我就简单的示例一下吧。
使用起来其实也比较简单,和前面的一样,需要一点点正则表达式的知识,有兴趣的朋友稍微去看下就ok了。做了一个示例,这里就不把全部代码贴出来了,太浪费空间。只是在这么强调一些地方,首先是记得把下载到的DLL文件添加到引用,在我的演示示例中,大家可以参照我的webconfig文件的写法,关键部分是下面的代码:
<rewrites>
<add name="Rewrite"virtualUrl="^~/(.*)/(.*).html"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Default.aspx?category=$1&id=$2"
ignoreCase="true" />
</rewrites>
这个节点是我们存放重写方法的地方,其余部分都是一样的。我这里展示了两个参数的URL重写,因为一个参数很容易,大家在写的时候可能会遇到问题,重写规则与第一种方法中类似。重写后的效果如下:
简单的演示代码如下:UrlRewritingDEMO.rar
还有一种常用的URL重写工具与UrlRewriting.Net类似,叫UrlRewriter.Net,使用也几乎相同,这里就不再介绍了。
3)创建自己的重写代码
使用工具,有时候有一些局限性。比如说在某些虚拟主机中,可能就不支持。这样我们可以创建自己的重写代码,虽然稍微复杂,但比较适合规模较小的站点。借助全部应用程序类,我们可以将重写方法写在应用程序启动运行部分,就是大家都知道的Global.asax文件。
在Application_BeginRequest()方法中可以完成我们的重写方法。我在这里简单地演示一下,相信很多人都使用过:
void Application_BeginRequest(object sender,EventArgs e)
{
HttpContext context = HttpContext.Current;
string curURL = context.Request.Path.ToLower();
if (curURL == "/website/test.html")
{
context.RewritePath("~/default.aspx");
return;
}
}
整个重写过程就在这个文件中完成,只是在转向固定的地址时有点麻烦。
前面介绍了几种URL重写的方法,使用起来都比较方便。但有一种能达到目的作法(友好的URL地址)并非URL重写一种。很多朋友都把从动态地址转换到动态地址的过程叫做静态化(这样并不准确)。就像现实生活中一样,很多东西都真真假假得让人模糊得分辨不出来。静态化也是这样,通常把静态分真静态和伪静态,但是这样的真假似乎对我们更有好处,不像现实生活中。而且只要我们稍加观察,就能分辨其中的真伪。很显然,伪静态只是形式上的静态,确实,它只是把URL地址转换成静态了,内容仍然是动态的。另外一种方式则是确实将(部分)内容完全静态化了,至少生成了一个静态的文件。
好多朋友其实都知道,就是利用模板生成了新文件。现在很多站点都这么做了,这样做有一个很大的好处,就是在访问量很大时可以很大程度地减小数据库的压力。当然,就算生成了静态的模板,有些数据还是需要动态获取的,这时候我们使用ajax可以比较方便地获取数据。曾经为了使用方便,弄了一个利用模板文件生成文件的类,使用起来比较简单。这样做的原理本来就比较简单,有兴趣的朋友可以弄去看看,代码就不贴出来了。使用的时候很容易(如果你把刚刚我说的那个文件放到了App_Code文件夹的话),我举个例子:
string[] strNewsHtml = new string[] { NewsTitle,NewsBody, PubTime.ToString(), UserName };
这里是需要生成的内容
string[] strOldHtml = new string[] { "@Title", "@NewsBody", "@PubTime", "@UserName" };
这里是需要替换的标签
Files.CreatHtmlPage(strNewsHtml, strOldHtml, "newsmode.htm", strFilePath)
生成新文件
模板文件生成文件类下载CreateFiles.rar剩下的内容就是用ajax获取你的动态内容了,相信大家都经常用到了,在这里就不说了。
不知不觉就写了这么多了,也许有朋友说我写的内容太简单,没有什么内涵。关于这点我也不好说什么,只是尽自己的努力希望能给一些朋友带来方便吧(我一直的目标是把技术文章写成象科普文章一样让人看了就懂)。记得我当初学习的时候,没有人教,就自己买了几本书看,有的时候一个问题要郁闷许久,真的经常有放弃的念头。现在过了那种时常想放弃的日子,还需要更加继续努力,希望和大家一起进步!