是历史.pushState处理的是散列url


Does history.pushState really cope with hash bang urls?

最近,我读了很多关于hashbang url与历史的对比。pushState构建seo友好的ajax站点。似乎每个人都同意pushState是更好的方法,所以我想使用它。

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

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

用户可以收藏url并获得漂亮的内容,因为url是不同的(#!…),Javascript将生成内容。

与历史

。另一方面,我将被迫使用像"…getItem.php?"itemid=356375'(对吗?)-但是现在,我不能再在这里提供丑陋的内容,因为用户可能会收藏这些url。

所以,简单地说:

hash_bang允许我们通过javascript专注于客户端漂亮的内容渲染,同时为搜索引擎提供"丑陋"的内容页面- PushState强迫我们在不使用javascript的情况下一直提供漂亮的内容?

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

我已经处理这个问题几个月了,得出的结论是您必须能够支持#!路径,如果你想让谷歌做_escaped_fragment_爬行。

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

我有更多的细节写在我的博客上。

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