0

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

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

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

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

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

所以,简而言之:

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

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

4

1 回答 1

0

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

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

我的博客网站上有更多详细信息。

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

于 2014-10-29T16:10:03.580 回答