我正在尝试从Facebook上的应用分享此网址: http://www.example.com/#!v;id=NH1NlYov3bKJ
但是,它会自动替换为: http://www.example.com/?_escaped_fragment_=v%3Bid%3DNH1NlYov3bKJ
此网址错误,并且未从网页检索正确的标题,说明和图片。我能做什么?感谢
答案 0 :(得分:8)
为什么您的网址包含序列#!
?你能改变吗?由于ajax内容不可抓取,因此序列是(Google)规范的一部分,以使此内容可以抓取,并且大多数互联网大鱼现在都在使用它。
它是如何运作的?假设你有一个像www.example.com/folder#!id=4
这样的网址。这意味着url的一些内容由ajax传递,它取决于信息id = 4,称为hash。 Google抓取工具会尝试读取页面www.example.com/folder?_escaped_fragment_=id=4
,根据规范,抓取工具希望找到同一页面的无ajax版本。
我根本不喜欢它,但它有效,这就是为什么Twitter,Facebook,Groveshark和许多其他大鱼都在使用该规范。因此,当你在facebook(100%ajax页面)中分享groovehark歌曲时,facebook知道在哪里可以找到同一页面的非ajax版本。但是因为Facebook也试图改变你的网址。
答案 1 :(得分:6)
根据Google指南停止使用#!
或处理转义片段查询。
请参阅Google's "Full Specification" for Webmasters:
包含以感叹号开头的哈希片段的每个网址都被视为#!网址。请注意,任何URL最多可包含一个哈希片段。每个漂亮的(#!)URL都有一个相应的丑陋(_escaped_fragment_)URL,它是通过以下步骤派生的:
- 哈希片段成为查询参数的一部分。
- 哈希片段在查询参数中通过前面的_escaped_fragment _ =
表示- 当哈希片段成为查询参数的一部分时,某些字符会被转义。这些字符如下所列。
- URL的所有其他部分(主机,端口,路径,现有查询参数等)保持不变。
在这种情况下,Facebook最初正在做这个非常丑陋(或客户端动态到可抓取)的步骤。请记住,_escaped_fragment_
表单应该会生成可重复的快照。
答案 2 :(得分:0)
Hacky我知道,但是我将使用.htaccess和mod_rewrite来捕获_escaped_fragement_网址。在我的情况下,这是因为我制作了一个纯粹的.html / .js单页面webapp,我需要抓住搜索引擎想要一个快照,但你可以使用相同的技术将丑陋的_escaped_fragment_重写为正确的格式为您的网站。
答案 3 :(得分:-1)
另一个想法是在共享之前通过快捷服务推送正确的网址,例如http://goo.gl/