关于#的一般问题! hashbang网址,我正确使用它们

时间:2011-02-11 00:00:00

标签: javascript ajax

我正在撰写一个包含相当大的画廊的网站。在图库的第一页,用户将显示一堆缩略图,其网址为:website.com/gallery.php

当他们点击缩略图时,如果关闭了javaScript,它将跟随href中的url并转到名为gallery.php?img = 67的页面。如果打开javaScript,则不会执行href单击,而是执行ajax请求以显示较大的图像和一些关于它的文本。网址更改为gallery.php#!img = 67。后退按钮将带您返回缩略图,按f5将保持显示文本的大图像。如果有人用#复制地址!并将其发送给某人,他们将获得相同的图像显示(假设接收器已打开javaScript)。

我的问题是,我是否正确对Google进行了整理,以便为各个图库页面编制索引?将谷歌索引两次,一次使用?img = 67,一次使用#!如果是这样那么坏事呢?一旦加载缩略图页面以提高速度,我正在使用javaScript / Ajax预加载较大的图像。我最近看到很多反对使用hasbang ajaxy的东西,并想知道你是否认为可以在这里使用它?

3 个答案:

答案 0 :(得分:4)

Google会关注您的链接并为?img=67网页编制索引,并且不会将您的#!网页编入索引,因为它无法看到这些链接。您可以通过执行以下操作告诉Google有关这些链接的信息:

  1. <meta name="fragment" content="!">添加到文档的<head>,然后
  2. 通过返回包含/?_escaped_fragment_=标记中所有#!个链接的网页的“HTML快照”来处理<A>的请求。
  3. 此外,要充分利用此功能,还应通过返回显示大图像的HTML快照页面来处理/?_escaped_fragment_=img=67的请求。请记住,GoogleBot不会执行Javascript。使用#!网址会让Google检索该页面的替代版本(#!已被?_escaped_fragment_=替换的版本)应该在没有Javascript的情况下呈现

答案 1 :(得分:1)

最近在新闻中使用了网址中的#!标记,并对知名博客进行了更新。

http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs很好地描述了它们最适合的用途 - 以及何时它们可能会很糟糕。我认为你在画廊中的使用是非常有效的。

简而言之,像http://lifehacker.com/#!5753509/hello-world ...这样的网址被Google和其他兼容的网络蜘蛛重写为http://lifehacker.com/?_escaped_fragment_=5753509/hello-world ......

Google可能会将它们编入索引两次,但您也可以使用canonical元标记来确保它知道“正式”副本是什么。

答案 2 :(得分:1)

可能的解决方案(如http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs中所述)是使用常规链接并将其转换为#!在OnClick()事件中。这可以确保网站显示常规链接而不是糟糕的#!

它确实意味着服务器的额外工作,因为服务器需要支持两个版本(Ajax版本和常规版本),但我认为值得。这些#!真是太丑了..