4

我正在开发一个在线音乐杂志。我们有一个 html5/flash 音乐播放器,它构成了网站的主要部分。但该网站也有很多文章和东西。所以基本上,我希望跨页面加载无缝音乐播放,但我也希望避免使用完整的 javascript 应用程序,因为我希望所有内容在 Google 中都是蜘蛛友好和可索引的。

我使用带有 hashbang (#!) 后备的 html5 history api 来在点击时加载主页内的各种内容。加载的 URL 也指向包含内容的页面。

例如:我的索引页 munimkazia.com 中的 munimkazia.com/page1.html 链接将从 page1.html 加载内容并插入。URL 将在 firefox 和 IE 中更改为 munimkazia.com/#!/page1.html,在 chrome 中更改为 munimkazia.com/page1.html。由于 href 链接是 munimkazia.com/page1.html,因此蜘蛛会跟随链接并获取内容。我在 page1.html 中正确设置了页面,可以查看了。但是现在,我有问题。

如果我决定在此页面上使用 ajax 加载,浏览器位置栏上显示的 URL 将与 hashbang 回退不一致 (http://munimkazia.com/page1.html/#!/page2.html) 如果我决定将所有点击重定向到http://munimkazia.com的主容器页面并加载 page2.html,此后一切正常,但此页面加载将中断之前的音乐播放(如果有)。

另外,我不想将所有http://munimkazia.com/page1.html重写为http://munimkazia.com/#!/page1.html,因为我希望所有内容都存在而不是获取并且由 javascript 编写,供搜索引擎蜘蛛阅读。我知道谷歌有一个规范来阅读 #! URL,但我希望页面加载用户的文章内容,即使 JS 被禁用

有什么想法/建议/解决方法吗?

编辑:这些网址只是解释我的观点的例子。在 munimkazia.com 上没有 javascript 代码来获取页面

4

1 回答 1

3

哈希爆炸#!URL可以被 Google 索引,这就是它们的全部意义,否则人们只会自己使用哈希 #。

我认为这个想法是谷歌看到的是#!URL 并将其转换为查询字符串参数,例如。example.com/#!/products/123/ipod-nano-32gb变成example.com/?_escaped_fragment_=/products/123/ipod-nano-32gb了,但用户仍然使用 hash-bang URL。您对服务器进行编程以响应 ?_escaped_fragment_ 参数,但 JavaScript 用户会被重定向到正确的 #! 网址。

在此处查看 Google 规范http://code.google.com/web/ajaxcrawling/docs/getting-started.html

我不认为同时使用这两种类型的 URL 是一个好主意,因为您将有两个 URL 被用户发布在博客、Twitter 等上的同一页面上,编写代码来处理它也是一场噩梦可靠。在更广泛地支持 HTML5 History API 之前,您现在可能不得不接受 hash-bangs。

于 2011-02-16T08:57:15.597 回答