首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pushState与搜索引擎优化

pushState与搜索引擎优化
EN

Stack Overflow用户
提问于 2011-06-01 05:37:10
回答 2查看 21.9K关注 0票数 81

许多人一直在说,使用pushState而不是hashbang。

我不明白的是,如果不使用hashbang,你怎么能对搜索引擎友好呢?

假设您的pushState内容由客户端JavaScript代码生成。

场景是这样的:

我上example.com了。我的用户单击一个链接:href="example.com/blog"

pushState捕获点击,更新URL,从某个地方获取一个JSON文件,并在内容区域中创建博客帖子的列表。

有了hashbang,谷歌知道去escaped_fragment网址获取他们的静态内容。

对于pushState,谷歌什么也看不到,因为它不能使用JavaScript代码加载JSON并随后创建模板。

我能看到的唯一方法是在服务器端呈现模板,但这完全否定了将应用层推送到客户端的好处。

所以我没搞错吧,pushState对客户端应用程序的搜索引擎优化一点都不友好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-06 10:51:25

使用谷歌为那些不想在他们的URL中使用散列刘海的人建议的元标记如何:<meta name="fragment" content="!">

有关更多信息,请查看此处:https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

不幸的是,我不认为Nicole澄清了我所认为的OP存在的问题。问题很简单,如果我们不使用hash-bang,我们就不知道我们向谁提供内容。Pushstate不能为我们解决这个问题。我们不希望搜索引擎告诉最终用户导航到某个URL,而这些URL会显示出未格式化的JSON。相反,我们创建URL(触发对更多URL的其他调用),这些URL通过AJAX检索数据,并以我们喜欢的方式呈现给用户。如果用户不是人类,那么作为替代,我们可以提供html快照,以便搜索引擎可以正确地将人类用户定向到他们期望在其上找到所请求的数据的URL (并且以可呈现的方式)。但最终的挑战是我们如何确定用户的类型?是的,我们可能会使用.htaccess或其他东西来重写我们检测到的搜索引擎机器人的网址,但我不确定这是多么全面和未来的证明。谷歌也可能会惩罚做这种事情的人,但我还没有充分研究过。所以(pushstate +google的meta tag)组合似乎是一个可能的解决方案。

票数 17
EN

Stack Overflow用户

发布于 2016-05-31 16:05:26

所有关于pushState和#!的有趣讨论,我仍然看不出pushState如何像最初的发帖所要求的那样取代#!的目的。

我们制作99%基于JavaScript的Ajax站点/应用程序SEOable的解决方案当然是使用#!。由于客户端渲染是通过HTML、JavaScript和PHP完成的,因此我们在由页面登陆控制的加载器中使用以下逻辑。超文本标记语言文件与JavaScript和PHP是完全分开的,因为我们想要在两者中使用相同的超文本标记语言(在大多数情况下)。JavaScript和PHP做的基本上是一样的事情,但是PHP代码没有那么复杂,因为JavaScript的用户体验要丰富得多。

JavaScript使用jQuery向HTML注入它想要的内容。PHP使用PHPQuery将它想要的内容注入到HTML中-使用“几乎”相同的逻辑,但要简单得多,因为PHP版本将只用于显示带有SEOable链接的SEOable版本,而不像JavaScript版本那样与之交互。

page.htm、page.js和page.php是组成页面的三个组件,任何使用转义片段的组件都可以知道是否加载PHP版本而不是JavaScript版本。对于不可搜索的内容(例如只有在用户登录后才能看到的页面),PHP版本不需要存在。一切都很简单。

我仍然不明白,一些前端开发人员如何在不结合使用服务器端技术和浏览器技术的情况下开发伟大的站点(利用Google Docs的丰富功能)……如果甚至没有启用JavaScript,那么我们的99% JavaScript解决方案当然不会在没有PHP的情况下做任何事情。

如果启用了JavaScript,可以有一个很好的网址登陆PHP服务的页面并重定向到JavaScript版本,但从用户的角度来看,这并不好,因为用户是更重要的受众。

顺便说一句。如果你正在做一个简单的网站,可以在没有任何JavaScript的情况下运行,那么如果你想逐步将用户体验从简单的静态渲染内容提升为更好的内容,那么我认为pushState是有用的,但如果你想让用户从go get...假设你的最新游戏是用JavaScript或Google Docs之类的东西编写的,那么它在这个解决方案中的使用就有一定的局限性,因为优雅的后退只能在用户体验与网站的视觉相比痛苦之前走那么远。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6193858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档