javascript - history.pushState 真的可以处理 hash bang url 吗?

标签 javascript php seo pushstate hashbang

最近,我阅读了很多关于 hash-bang url 与 history.pushState 的对比,以构建 SEO 友好的 AJAX 站点。似乎每个人都同意 pushState 是更好的方法,所以我想使用它。

问题是:我有一个单页网站和(在服务器上)一个包含大约三百万个条目的数据库——我没有所有这些条目的静态页面,而是使用 AJAX 获取它们并将它们插入网站(如果用户单击某个链接或执行搜索)。

有了 HashBang-URL,我知道 Spider 会寻找不同的 URL (escaped_fragment…),所以在服务器端我可以提供一个“丑陋”的页面,它不包含任何样式,只包含我想要索引的内容。

用户可以将 URL 加入书签并获得漂亮的内容,因为 URL 是不同的 (#!…) 并且 Javascript 将生成内容。

另一方面,对于 history.pushState,我将被迫使用像“...getItem.php?itemid=356375”这样的 URL(对吗?)——但现在,我不能再在这里提供难看的内容,因为用户可能为这些 URL 添加书签。

所以,简而言之:

Hash-Bang 允许我们专注于通过 javascript 在客户端呈现漂亮的内容,同时向搜索引擎提供“丑陋”的纯内容页面——PushState 迫使我们在不使用 javascript 的情况下一直提供漂亮的内容?

有什么解决方法吗?有什么方法可以不必在服务器端(在我的例子中是 PHP)提供漂亮的内容,同时仍然可以让用户为提供漂亮内容的 URL 添加书签(通过 Javascript)?

最佳答案

我已经处理这个问题几个月了,得出的结论是你必须能够支持#!如果您希望 Google 进行 _escaped_fragment_ 抓取,请在您网站中添加路径。

我发现 Google 根本不会以适当的方式_escaped_fragment_ # 或标准路径。

我在我的博客网站上写了更多详细信息。

http://mark.stratmann.me/articles/the-great-ajax-seo-saga

关于javascript - history.pushState 真的可以处理 hash bang url 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265552/

相关文章:

javascript - RxJS:使用拖放时如何防止点击元素

.htaccess - 我应该为 htaccess 使用重定向 301

wordpress - SEO 类别和子类别

html - 使用 iframe 将 CSS 媒体查询应用于 block 元素

php - 导致哈希在一定时间后过期

php - Apache 安装和运行 php 文件

javascript - 为什么 document.getElementById 返回的对象与 $ (".class").last().get() 不同?

javascript - 使 Highcharts 的 setExtremes 关闭并带有两个 yAxis

javascript - 在javascript函数中保持变量事件的问题

php - 使用 __set 和 __get 魔术方法实例化类