如果想知道您的站点上有多少页面进入了索引,那么先做个简单的测试。进入 Google 或者您喜欢的其他搜索引擎,搜索您公司的名称。如果公司名称是一个常见名称(比如 AAA Plumbing 或 Acme Industries),那么再加上地区(AAA Plumbing Peoria)或公司最出名的产品(Acme Industries sheet metal),看看您的站点是否被找到了。
如果发现一个 Web 站点根本 没有被编入搜索索引中,那么通常有两个原因:
如果幸运的话,在搜索引擎中输入公司名称时,至少会找到您 Web 站点上的一个页面。通常情况是任何特定的搜索引擎只将您的部分页面编入了索引中,但是如果几乎所有页面都被编入了索引,就更好了。没有编入索引的页面越多,您站点的潜在访问者就越有可能转向您的竞争对手(如果他们的页面已编入索引)。
首先,计算包含率(inclusion ratio),也就是被搜索引擎编入索引的页面占总页面数的百分比。当然,理想的包含率是 100%,但是稍微低一些也可以让人满意。如果页面中只有不到 50% 被包含在搜索索引中,那么就要认真对待了。
为了计算包含率,将搜索引擎索引中的页面数除以您站点上的页面总数。如果您的 Web 站点相当小,那么估算站点的页面总数可能很容易,但是对于大型站点,有时候很难查明有多少个页面。对于大型站点,可以使用几种方法估算页面数:
对 Web 站点的规模进行估算之后,就要查明站点中有多少页面被编入了索引。Google、Yahoo! Search 和 MSN Search 都提供了 “site:” 操作符,它会报告您需要知道的信息。输入 site:
,后面加上您的域名(比如 site:kodak.com
),查看返回的结果。更方便的工具是 Marketleap 的免费工具 Saturation Reporting Tool(参见 参考资料),它会显示任何站点在每个搜索索引中的页面数。
|
如果计算包含率的结果很糟糕,那么该怎么办呢?首先,我们回顾一下搜索引擎如何将页面编入索引。搜索引擎使用专门设计的称为爬行器(spider 或 crawler)的程序来检查站点上的页面。
爬行器收集每个页面的 HTML,并记录到其他页面的链接,这样以后它就可以去收集这些页面的 HTML。您可以想像到,经过足够长的时间之后,爬行器最终会找到 Web 上的每个页面(至少是每个链接到其他页面的页面)。获得页面,找到页面上的所有链接,然后获得链接到的那些页面,这个过程称为 “在 Web 上爬行”。
因为爬行器是这样工作的,创建对每个页面的链接可以简化让站点被编入索引的任务 —— 我们将这些技术称为爬行器路径(spider path)。您的站点已经包含路径,而且可能已经有了最重要的爬行器路径类型:站点地图。如果站点只包含少量页面,那么站点地图可以列出并链接到站点上的每个页面。
但是,站点地图不应该超过 100 个链接,所以比较大的站点地图必须链接到分类页面,这些页面再链接到站点上的其他页面。最大型的 Web 站点通常划分成针对各个国家的分站,这就需要特殊的站点地图,称为国家地图(country map),其中列出每个国家的名称并链接到各个国家站点的主页。爬行器非常喜欢这种技术。(参见 参考资料 中大型站点地图的示例。)
只有爬行器到了您的站点上,站点地图才会发挥作用,但是还有更加主动的使页面被编入索引的方法。Google 和 Yahoo! 都提供包含程序(inclusion program),专门用来使页面被编入索引。Google 的 beta 程序称为 Sitemaps(参见 参考资料),它是免费的,提供几种向 Google 爬行器通知页面位置的方法。甚至可以请求 Google 对您的一部分页面进行更频繁的索引更新。Yahoo! 提供一个付费的包含程序 SiteMatch(参见 参考资料),它承诺在 48 小时内对您的页面重新编制索引。(Google 对时间没有做出承诺。)
RSS feed 提供了另一种方法,可以在页面发布时使页面迅速地被编入索引。使用 Ping-O-Matic!(参见 参考资料)通知搜索引擎在 RSS feed 有了新条目,新条目常常会在一两天内被编入索引。
|
徒步旅行的队伍要让开路者去探索和标出前进路线,但是开路者必须经常清理这些路径,使路径不会损毁或荒废。爬行器路径也是一样的;除非经常检查它们,否则很可能就会阻塞了。
如果您忽视了爬行器的工作方式,爬行器路径就很容易成为爬行器陷阱。对人来说很好的页面却可能阻碍爬行器。爬行器是自动的,所以不会像人类访问者那样填写注册表单。如果链接到站点上的页面所需的操作不仅仅是沿着 HTML 锚标记走,那么这个链接可能会对爬行器隐藏。
这意味着 JavaScript、Flash、frames 和 cookie 也会造成问题。如果您的 Web 页面没有这些技术就根本无法显示,那么页面就不会被爬行器编入索引。另外,如果用户需要这些技术才能使用链接,那么爬行器就无法沿着链接前进。
爬行器只查看 HTML 代码,就像有视力障碍的用户所用的屏幕阅读器一样。要想体会一下爬行器看到了什么,可以在查看页面时禁用浏览器对 cookie、JavaScript 和图形的支持,或者使用文本模式的 Lynx 浏览器或 Lynx Viewer(参见 参考资料)。如果页面可以使用 Lynx 完整地显示,那么它们很可能能够被编入索引。根本不显示或者显示得很不完整的页面不容易被搜索引擎找到。
即使您避免使用这些惹麻烦的技术,仍然可能会给爬行器造成阻碍。爬行器对 HTML 代码的正确性要求非常严格 —— 浏览器就要宽容多了。在浏览器中看起来很好的页面却可能阻碍爬行器,这会使爬行器看不到或误解整个页面或部分页面。HTML 检验服务(参见 参考资料)和 Firefox 浏览器可以发现这些错误。
还必须注意爬行器对每个页面的内容大小限制。大多数爬行器只对页面中的前 100,000 个字符编制索引。这个数字听起来似乎很大,但是如果在页面中添加 JavaScript 程序和样式表,或者把整个用户手册放进一个 PDF 文件中,那么很快就会达到这个限制。所以,可以考虑将手册分割为每章一个 PDF,并将所有 JavaScript 和样式表代码转移到外部文件中。
|
清理了爬行器路径之后,必须确保爬行器是受欢迎的。最明显的建议是,当爬行器到达时,确保站点正在运行,能够做出响应。因为不知道爬行器什么时候会访问您的站点,频繁地停机(即 “维护时间窗”)会有风险,如果爬行器在站点停机时到来,它就会认为站点是失效的,从而转到其他站点去。
如果站点的响应速度非常慢,这几乎和完全失效一样糟糕,因为爬行器是按进度计划运行的。对于缓慢的站点,它们编入索引的页面更少,而且再次访问的频率更低,因为在同样的时间内它们能够在其他地方处理更多的页面。
即使您的站点通常不停机而且速度很快,仍然有可能由于错误地编写了机器人指令(robots instruction) 而将爬行器拒之门外。可以使用 robots.txt 文件让爬行器避开某些页面、目录或整个站点,所以如果站点的指令编写错了,就可能赶走爬行器。另外,每个页面都可以有一个 robots 标记,它指示爬行器是否将这个页面编入索引,以及是否沿着其中的链接前进(参见 参考资料。)
|
即使您的站点欢迎爬行器,也不能保证它以后不会遗弃这个站点。
会阻碍爬行器的一个问题是对页面使用长的动态 URL。许多动态 URL 需要用参数来选择要显示的内容,比如来自 Canada 产品目录的产品 2372 的法文说明。爬行器很反感这些动态站点,因为参数的组合几乎是无穷的 —— 爬行器不希望在站点中迷路。当爬行器看到 URL 超过 1,000 个字符或者其中的参数超过两个时,它们往往会跳过这些页面。
如果您的站点存在这些有问题的 URL,就必须参考 Web 服务器的文档,研究如何改变 URL 的形式以使爬行器满意。例如,Apache 使用 “mod_rewrite” 功能(参见 参考资料)修改 URL,其他 Web 服务器也有相似的功能。
所谓的 “会话标识符” 也会吓走爬行器。一些程序员在 URL 中创建一个参数,用来捕捉关于当前访问者的信息(常常用 “id=” 加上惟一的字母数字编码来标识)。爬行器很讨厌这种技术,因为它导致成百上千的不同 URL 显示同样的内容。程序员应该将这一信息存储在 Web 应用服务器的会话层或者 cookie 中。(但是,正如前面讨论的,显示页面应该不需要 cookie,否则爬行器无法将它编入索引。)
分析了动态页面之后,还要注意另一个可能给页面造成麻烦的问题。重定向 这种技术告诉浏览器和爬行器请求的 URL 已经改变了。例如,如果您的公司改名了,它可能也会改变 Web 站点的域名,所以重定向可以将来自旧 URL 的所有访问者转到新的 URL。但是,对于爬行器有效的重定向方法只有一种:服务器端重定向,也称为 301 重定向(参见 参考资料)。其他重定向技术对浏览器是有效的,比如元刷新重定向和 JavaScript 重定向,但是爬行器无法沿着这些重定向的路径前进,这会使重定向的页面不被编入搜索索引。