最近,我阅读了很多关于 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_ # 或标准路径。
我在我的博客网站上写了更多详细信息。
关于javascript - history.pushState 真的可以处理 hash bang url 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265552/