history.pushState真的可以应对哈希爆炸网址吗?

时间:2014-06-17 13:47:03

标签: javascript php seo pushstate hashbang

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

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

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

用户可以为网址添加书签并获取精美内容,因为网址不同(#!...),Javascript会生成内容。

另一方面,使用history.pushState,我将被迫使用像' ... getItem.php?itemid = 356375' (对吧?) - 但现在,我不能再在这里提供丑陋的内容了,因为用户可能会将这些网址加入书签。

所以,简而言之:

Hash-Bang允许我们通过javascript专注于客户端漂亮的内容呈现,同时服务于丑陋的#39;仅限内容的搜索引擎页面 - PushState强制我们不使用javascript一直提供漂亮的内容?

有没有解决方法?任何方式都不必在服务器端(在我的情况下是PHP)中提供漂亮的内容,同时仍然可以让用户为提供漂亮内容的URL添加书签(通过Javascript)?

1 个答案:

答案 0 :(得分:0)

我一直在处理这个问题几个月,并得出结论,你必须能够支持#!如果您希望Google执行_escaped_fragment_抓取,请访问您网站中的路径。

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

我在博客网站上写了更多细节。

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