当前位置:文档之家› 第7章 搜索引擎优化

第7章 搜索引擎优化

第7章搜索引擎优化在增加了产品属性后,你可能急着增加一些新的特性,例如接受用户付款, 产品搜索或者购物篮等,我们将在以后增加这些。

在这之前,我们需要为Web站点增加搜索引擎优化。

这是一个重要的话题,因为它直接影响一个Web站点的效益。

搜索引擎优化(Search engine optimization), 或者说SEO,指的是通过非盈利的搜索引擎来提高访问站点的访问者数量,通过相关的关键字来提高站点的搜索排名。

当然SEO是一个复杂的话题,本章中我们将修改BalloonShop站点,以便它的核心架构是搜索引擎友好的。

7.1优化BalloonShop(Optimizing BalloonShop)下面看看为了BalloonShop更搜索引擎友好,我们能够做些什么?本章中我们将:•通过URL 重写在URL中包含关键字, 不是通过各种查询字符串来请求default.aspx 或者catalog.aspx, 我们的站点将支持URL,该URL对用户和搜索引擎都更友好, 例如/toy-story.html。

该步骤中,站点必须使用新的内部链接来更新。

•适当地重定向到老的URL或者误写的URL到正确的URL。

若你的老的URL在线有一段时间并且它们有分页控制是这是很重要的。

这个转换各种不同格式的URL到一个标准形式的过程称为URL规范。

•重定向请求到default.aspx以及index.html到/。

因为我们不想同样的内容在站点的不同的URL中复制。

这可能导致搜索引擎处罚。

•使用404 (page not found) 和500 (server error)状态代码来反映站点的问题。

我们将创建更SEO相关(SEO-related)努力在本章中,但是我们可能只涉及到一些基本的知识。

下面的有关SEO相关(SEO-related)的内容将讨论。

•我们正确使用页标题和其他标记, 以便搜索引擎能够标识页面的重要的拷贝。

•我们没有重复的内容。

类别不包含同样的页面或页面框架, 这将引起搜索引擎处罚。

•产品, 部门和类别页面很容易访问。

•每一个页面有自己的标题来反映它的内容。

•产品列表通过分页可访问其所有的子页面, 不仅仅是Previous和Next链接。

这将使得产品分页很容易被搜索引擎和访问者访问。

•产品图片有相关的alt属性。

•我们不使用诸如Flash和Ajax技术, 它们的内容不会被搜索引擎读取。

本章的后面,你将看到一个使用Ajax的例子,它不会影响搜索引擎的可见性。

7.2支持URL包含关键字(Supporting Keyword-Rich URLs)先看看如下的URL, 选择你喜欢的一个:•/Catalog.aspx?DepartmentID=2&CategoryID=5•/Balloons-for-Children-d2/Cartoons-c5/自然的,你可能喜欢第二个,不仅仅它包含了相关页面内容的关键字,它可能影响搜索引擎的排名, 更重要的是它更吸引访问者。

我们称第一个URL为动态URL,第二个为包含关键字的URL。

包含关键字的URL和动态URL的差别是包含关键字的URL不是指向一个已存在的物理文件或文件夹,另外,动态URL指向一个实际的文件,该文件能够被服务器执行或加载—例如前面例子中的Catalog.aspx页面。

实际中,为支持包含关键字的URL,你需要书写拦截URL的代码,遵循一定的模式并重写请求到另外一个可以被应用处理的URL。

这个过程称为URL重写。

图Figure 7-1显示了一个简单的URL重写的例子。

正如你所看到的,URL重写拦截了访问者的URL请求并将其重写到一个动态的应用能够理解的URL。

脚本执行后,结果被发送到用户。

Figure 7-1. A URL rewriting example和ISAPI_Rewrite编写你自己的URL重写代码是一个复杂的任务,不值得提倡,除非你要创建你自定义的URL重写解决方案。

在典型的URL重写场合,使用已存在的UR重写产品是有意义的—例如Helicon Tech (/) 的ISAPI_Rewrite或者 ()。

这两个产品,以及创建你自己的URL重写代码的技术,在Professional Search Engine Optimization with (Wrox Press, 2007)中有涉及。

对于开发BalloonShop站点, 我们使用。

该工具是的实现URL 重写的开源组件,所以它能够方便地整合到你的项目中。

而ISAPI_Rewrite,是作为一个ISAPI过滤器来实现的,它在IIS级别上来完成URL重写。

7.2.2包含URL关键字的BalloonShop站点有几种方式进行URL关键字的包含。

在BalloonShop中,我们使用的技术既有效又简单。

我们将在URL关键字中隐藏相关ID值,例如/Birthday-Balloon-p23/。

本章中,我们将按照Table 7-1来进行URL的支持。

其中,“X”用来表示department, category和product ID值的占位符, “P”是一个页号。

7.2.3为BalloonShop添加包含关键字的URL下面的练习将实现包含关键字URL的支持。

练一练: 支持包含关键字的URL1. 访问, 点击下载按钮,下载产品的最新版本。

2. 产品包包含一个名称为UrlRewriterV2的文件夹。

解压到硬盘中不同于BalloonShop 站点的文件夹中,例如可以解压到C:\目录中。

3. 在Visual Web Developer中打开项目。

4. 增加一个到Intelligencia.UrlRewriter程序集的引用。

方法是,在项目解决方案中右键点击项目的根文件夹, 选择Add Reference....,点击Browse tab, 选择UrlRewriterV2\bin\Release\Intelligencia.UrlRewriter.dll,选择该文件并点击OK。

5. 打开项目配置文件web.config,增加如下的配置节,使得可以从名称为rewriter的配置节点中读取配置。

<?xml version="1.0"?><configuration><configSections><section name="rewriter" requirePermission="false"type="Intelligencia.UrlRewriter.Configuration.➥RewriterConfigurationSectionHandler,Intelligencia.UrlRewriter" />...</configSections>...注意:<configSections>元素必须是<configuration>元素的第一个子元素。

6. 现在配置UrlRewriter HTTP模块,它允许来拦截进入的请求:<system.web>...<httpModules><add name="ScriptModule" type="System.Web.Handlers.ScriptModule, ➥System.Web.Extensions, Version=3.5.0.0, Culture=neutral, ➥PublicKeyToken=31BF3856AD364E35"/><add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter" /></httpModules>...7. 最后,你必须确认被配置来接收到不存在的文件或文件夹的所有请求。

如果你使用IIS 7 (in Windows Vista), 你必须在web.config 文件增加如下的配置:<system.webServer><validation validateIntegratedModeConfiguration="false"/><modules><add name="UrlRewriter" type="Intelligencia.UrlRewriter. ➥RewriterHttpModule" /><remove name="ScriptModule"/><add name="ScriptModule" preCondition="managedHandler" ...</modules>对于老版本的IIS (in Windows XP, Windows 2000 Server, or Windows 2003 Server), 你必须打开IIS 管理工具,并导航到Web站点属性窗口的Home目录标签,然后选择Configuration,并点击Add or Insert,来增加路径到aspnet isapi.dll(应该是C:\WINDOWS\\Framework\v2.0.50727\aspnet isapi.dll)。

在Windows XP和Windows 2000 Server, 还需要为文件扩展名书写.*,并取消file exists check box的选择。

最后,点击OK来关闭所有对话框。

8. 好了,现在可以使用了。

第一个测试中,我们为请求/my-super-product.aspx 重定向到/Product.aspx?ProductID=1。

增加如下的配置到web.config 文件的<configuration>配置节:<configuration><configSections>...</configSections><rewriter><rewrite url="/my-super-product.aspx" to="~/Product.aspx?ProductID=1" /></rewriter>...9. 加载/my-super-product.aspx。

相关主题