是否html5mode(true)影响谷歌搜索爬虫

Does html5mode(true) affect google search crawlers

本文关键字:谷歌 搜索 爬虫 影响 html5mode true 是否      更新时间:2023-09-26

我正在阅读这个规范,它是web服务器和搜索引擎爬虫之间的协议,允许动态创建的内容对爬虫可见。这里指出,为了让爬虫索引html5应用程序,必须在url中使用#!实现路由。在angular html5mode(true)中,我们去掉了URL的哈希部分。我想知道这是否会阻止爬虫索引我的网站。

简短的回答-不,html5mode不会弄乱你的索引,但请继续阅读。


重要提示:Google和Bing都可以在没有HTML快照的情况下抓取基于AJAX的内容

我知道,你链接到的文档不是这样说的,但是大约一两年前,他们正式宣布他们处理AJAX内容而不需要 HTML快照,只要你使用推送状态,但是很多文档都是旧的,不幸的是没有更新。

使用pushstates搜索引擎优化

要使AJAX爬行开箱即用,需要使用pushstates更改url。这正是Angular中的html5mode所做的(也是许多其他框架所做的)。当启用pushstates时,爬虫将等待ajax调用完成,并等待javascript更新页面,然后再对其进行索引。你甚至可以在路由器中更新页面标题或meta标签它会正确索引。实际上,您不需要做任何事情,在这种情况下,服务器端和客户端呈现站点之间没有区别。

需要明确的是,很多seo分析工具(如Moz)会在使用推送状态的页面上发出警告。这是因为这些工具(以及它们的代表,如果你和它们交谈的话)在写作的时候不是最新的,所以忽略它们。

最后,确保你是而不是使用下面的片段元标签。如果你有那个标签,爬虫会认为你想使用非pushstates方法,事情可能会变得混乱。

SEO没有pushstates

在Angular中不使用推送状态几乎没有什么理由,但如果你不这样做,你需要遵循问题中链接的指导方针。简而言之,你在你的服务器上创建html的快照,然后你使用片段元标签来改变你的url-fragment为"#!"而不是"#"。

<meta name="fragment" content="!" />

当爬虫找到这样的页面时,它将删除url的片段部分,而代之以参数_escaped_fragment_请求url,并且您可以提供快照页面作为响应。给爬虫一个普通的静态页面来索引。

注意片段元标签应该只在你想要触发这种行为时使用。如果你正在使用推送状态,并希望页面以这种方式索引,请不要使用此标签。

另外,在Angular中使用快照时,可以开启html5mode。在html5模式下,片段是隐藏的,但在技术上它仍然存在,并且仍然会触发相同的行为,假设片段元标签被设置。

一个警告- Facebook爬虫

虽然谷歌和必应都会抓取你的AJAX页面没有问题(如果你使用推送状态),Facebook不会。Facebook不理解ajax内容,仍然需要特殊的解决方案,比如专门为Facebook bot服务的html快照(用户代理facebookexternalhit/1.1)。


Edit—我应该提到我已经部署了所有这些版本的站点。无论是html5模式,片段元标签和快照,没有任何快照,只是依靠推送状态爬行。除了上面提到的推送状态和Facebook之外,一切都很好。

要允许对AJAX应用程序进行索引,必须在文档的头部部分添加特殊的元标记:

<meta name="fragment" content="!" />

来源:https://docs.angularjs.org/guide/$位置# crawling-your-app

在底部寻找爬行你的应用