blog

谷歌可能正在爬行AJAX - 如何最好地利用它

<p>2009年10月,谷歌提出了一个新的标准,用于在网站上实施AJAX,以帮助搜索引擎提取内容</p><p>现在,有证据表明该提案要么已上线,要么将继续阅读以获取有关该提案的更多详细信息,如何运作,为什么它可能会超过提案阶段麻烦与AJAX历史上,搜索引擎无法访问基于AJAX的内容,这个提议将使谷歌(以及可能是其他采用该标准的搜索引擎)索引更多的网络标准传统上,AJAX实现的SEO建议遵循可访问性最佳实践如果您使用渐进增强或优雅降级技术构建网站,以便屏幕阅读器可以呈现内容,那么搜索引擎可能也可以访问内容去年五月,我概述了AJAX的一些可抓取性问题和搜索友好实现的选项Google也提供了有关AJAX的建议,包括: AJAX的主要搜索引擎问题之一是它生成包含哈希标记的URL(#)由于哈希标记也用于页面中的命名锚点,因此搜索引擎通常会忽略以1开头的URL中的所有内容(称为URL)例如,Google会看到以下两个网址相同:Google的AJAX提案使用Google的提案,包含哈希标记(#)的AJAX生成的网址也会替换为使用#的网址!代替#所以,上面的第二个URL将成为http:// wwwbuffycomseasonsphp#!best = 2当Googlebot在哈希标记之后遇到感叹号时,它将使用将替换#的语法从服务器请求URL !与</p><p>_escaped_fragment_ =还在我身边</p><p>所有这些意味着当Googlebot遇到:http:// wwwbuffycom / seasonsphp#!best = 2它会从服务器请求以下URL:http:// wwwbuffycom / seasonsphp</p><p>_escaped_fragment_ = best = 2为什么,你问</p><p>好吧,因为URL中的_escaped_fragment_ =告诉服务器将URL请求路由到无头浏览器以执行AJAX代码并呈现静态页面但是,您可能会抗议,我不希望我的搜索结果中的URL看起来像那!不用担心,Google会使用该语法请求URL,但会将</p><p>_escaped_fragment_ =转换回#!向搜索者显示时如何实施</p><p>这个实现基本上要求你:哦,你还有问题吗</p><p>我有答案!那么,我自己的一些问题那些链接怎么样</p><p> Google是否会整合所有指向URL版本的链接并将其归结为#!版</p><p>似乎答案绝对没有,所有包含哈希标记的URL的链接都归因于片段之前的URL,而且情况将继续如此并且规范标记在这种情况下不起作用,因为谷歌没有不要处理URL的#版本所以回到我们之前的例子,http:// wwwbuffycom / seasonsphp #best = 2的所有链接都归结为http:// wwwbuffycom / seasonsphp等等,我们是否需要开始使用#!代替 #</p><p>您可能不希望以#和#!这样的方式实现它!网址共存相反,您需要用#替换#URL! URL当然,您无法重定向搜索引擎机器人(同样的原因机器人无法抓取并按原样对AJAX URL进行索引)这意味着,如上所述,页面将不会获得过去指向#版本的链接URL你应该确保#! URL的版本是访问者浏览器中显示的内容,因此任何新链接都是(现在可索引的)#!版本来自现有链接到#版本URL的访问者怎么样</p><p>您需要添加将URL版本转换为#的代码!版本(有关详细信息,请参见下文)如何创建#!网址代替#URL</p><p>这非常简单Just(我知道,没有“只是”)修改创建URL以输出#的AJAX代码! URL而不是#URN如上所述,对于任何使用#的现有AJAX页面,您都希望将访问者重定向到使用#的新URL!这不会导致Google将链接从#版本转移到#!版本,但它将确保访问者只看到#!版本,因此,任何新链接将是该版本,这将导致谷歌开始累积这些页面的PageRank 显然,你会想要获得谷歌将要编入索引的页面版本的任何新链接,这样这些页面就有更好的排名机会</p><p>我的同事Todd Nemet有一些建议将访问者从#版本重定向到#! URL的版本关于“无头浏览器”的内容是什么</p><p>无头浏览器在您的Web服务器上运行并处理对_esesped_fragment_ = URL版本的请求在Google的原始博客文章中,他们建议检查HtmlUnit,一个开源无头浏览器无头浏览器执行JavaScript并呈现静态页面,然后返回它对请求者我已经可以听到你的下一个问题了 - 那呈现的静态页面是什么样的</p><p>好吧,它应该暴露页面上的所有内容</p><p>这里的两个重要事项是,谷歌将能够获取内容并为其编制索引,并且谷歌将拥有用于索引内容的不同网址这对于可访问性意味着什么</p><p>当Google工程师在SMX East之后发布的简和机器人搜索开发者峰会上发表这个问题时提出了这个问题,该提议已经宣布此实现无法帮助内容在不支持JavaScript的移动设备上正确呈现在屏幕阅读器上所以在考虑是否要实现这个与另一种技术时,请考虑您的可访问性需求您还需要确保AJAX URL不仅仅是弹出窗口,因为您不希望搜索引擎在没有弹出窗口的情况下对其进行索引周围的页面内容确保无头浏览器创建一个静态页面,其中包含页面中的所有内容这个想法的任何其他问题</p><p>除了可访问性问题(我认为不应该被忽视)之外,最大的考虑可能是这种方法不适用于Google以外的搜索引擎</p><p>如果你关心将这些内容归入Bing和Yahoo!,你'我想探索其他方法另外,正如你将在下面看到的,它似乎可能在谷歌上运行,但有点儿错误所以,如果你计划实施它,你将不得不依靠谷歌工作的扭结您还应该完全规划实现您以前是否已经以其他方式为AJAX问题添加了解决方法,这些方法现在会与此方法冲突</p><p>此外,即使你不使用AJAX并且没有实现这种技术,也存在潜在的问题</p><p>最好不要将服务器配置为解析任何URL请求一个原因是从爬网效率的角度来看,你如果您的服务器响应任何URL的HTTP响应代码200,可以将搜索引擎机器人发送到无限爬行空间但是请注意下面的网站发生的事情“真正的”URL是iankellysmusiccom /关于/但似乎链接存在在网上iankellysmusiccom /关于/#!谷歌已经关注了这个链接并将其解释为这种新的AJAX技术这个网站还有一个额外的问题,即系统设置为根据URL中最后一个斜杠之后的文本自动生成标题标签</p><p> “URL创建了Ian Kelly的标题标签关于,上面的URL生成了Ian Kelly |的标题</p><p>_escaped_fragment_ =不是很棒当然,“真正的”网址也在谷歌的索引中:据推测,真正的关于页面将是相关搜索排名的页面,因为它应该有更多链接,但为什么要抓住机会一个通过搜索与潜在受众互动的机会被糟糕的搜索结果显示损坏更不用说这为竞争攻击提供了机会你说这超出了提案阶段</p><p>也许如上所述,谷歌似乎已经开始抓取这些网址并将其编入索引Google网上论坛帖子指出Google的搜索索引包含带有</p><p>_escaped_fragment_ =的网址,但事情似乎有点儿错误一张海报指出这些搜索结果,它显示的页面似乎与此实现相匹配,但搜索结果根本不显示任何URL,当我点击页面时,我在Flock中收到一个令人困惑的重定向错误消息并被发送回Google主页Internet Explorer在其他情况下,Google正在显示#!网址的版本,表示此提案至少部分有效(因为Google通常不会抓取超过#的网址)我发现了一些显示的结果</p><p>_escaped_fragment_ = Google表示他们会将这些网址翻译回#!在显示它们之前的版本,似乎有些网站实际上在他们的网址中有这个片段(我会说我会觉得很惊讶,但说实话,我在网上看到的任何东西都不会让我感到惊讶)我的猜测就是那个有人看到了提案并误解了它意味着网站页面应该使用URL的</p><p>_escaped_fragment_ =版本并以这种方式对其进行编码当您转到实际页面时,浏览器地址栏确实以这种方式显示ULR确保如果实施此解决方案后,您始终使用#!对网址进行编码,因为Google会在获取网址时进行转换,然后在显示网址时将其转换回用户友好版本Google搜索inurl:</p><p>_ escaped_fragment_ =似乎是返回我在上面描述的所有变体:包含#!的网址,包含</p><p>_escaped_fragment_ =的网址,根本没有列出网址的搜索结果,点击后的搜索结果,返回到同一个Goo你刚刚访问的搜索结果页面那么谷歌是否实时更改了这个</p><p>可能它是100%准备黄金时间</p><p>可能不是你应该开始实施吗</p><p>取决于你是否能够为搜索友好的AJAX实现另一种方法,我建议采用这种方式,因为它将使您的网站可供更广泛的受众使用,包括屏幕阅读器,移动设备和使用搜索引擎的用户除了Google之外如果你只是无法实现另一种方法而且无论是这种方法还是其他任何方法,那么它总比没有好你现在应该开始吗</p><p>谷歌似乎并没有完美无缺,但有证据表明他们已经开始抓取这些网址谷歌似乎不可避免地支持这种实施,所以如果你打算使用这种方法,你也可以开始使用意见在本文中表达的是客座作者的那些,

查看所有