是否html5mode(true)影响谷歌搜索爬虫
Does html5mode(true) affect google search crawlers
我正在阅读这个规范,它是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
在底部寻找爬行你的应用
- 使用谷歌搜索网址
- 与网络界面相比,谷歌搜索API有时会重复第一个结果,有时会重复第二个结果
- 如何获取显示在谷歌搜索右侧的图像链接
- 谷歌搜索API-“;没有结果”;文本
- 在javascript中调用自定义谷歌搜索标签时出现问题
- 返回谷歌搜索的网址列表
- 当我们点击链接时,谷歌搜索会动态
- 如何在谷歌应用程序脚本环境中获取谷歌搜索输出
- 谷歌搜索框Java脚本
- 无法向谷歌搜索网页发出JSONP请求
- 谷歌搜索自动完成地址api-只搜索特定城市的地址
- Javascript-来自关键字“;某事“;谷歌搜索查询“;什么的&”;
- 专注于输入谷歌搜索
- CasperJS无法填充谷歌搜索字段
- 将随机数传递给谷歌搜索
- 谷歌搜索结果在iframe中
- 计算用户进行的谷歌搜索次数
- 安卓:在谷歌搜索框中输入关键字
- 从JavaScript自动谷歌搜索
- 检测访问者是否来自谷歌搜索的最可靠方法