包含 <meta name="fragment" content="!"> 对带有 hashbang 的页面有害吗?

Posted

技术标签:

【中文标题】包含 <meta name="fragment" content="!"> 对带有 hashbang 的页面有害吗?【英文标题】:Is including <meta name="fragment" content="!"> harmful for pages with hashbang? 【发布时间】:2013-06-15 05:36:24 【问题描述】:

Google 对这个元标记的评价:

适用以下重要限制:

    元标记只能出现在没有哈希片段的页面中。 只有“!”可能会出现在内容字段中。 元标记必须出现在文档的头部。

来源:https://developers.google.com/webmasters/ajax-crawling/docs/specification?hl=fr-FR

我知道只有包含 hashbang 但仍应提供快照的页面才需要它。但这通常只是主页。

假设我们有:

www.foo.com

www.foo.com/#!/jobs

第二个将被提取为:

www.foo.com?_escaped_fragment_=/jobs

只是因为hashbang。

但是根页面没有hashbang,所以它需要在头部有这个特殊的元标记。

<meta name="fragment" content="!">

但由于到目前为止我所有的单页应用程序都使用相同的&lt;head&gt;,我想知道为所有其他确实包含hashbang的页面保留元标记是否真的有害。

实际会发生什么?

【问题讨论】:

我或 SO 有问题。我看到最近关闭的很多问题对我来说似乎完全有效。关闭问题时,请至少提供有关问题有什么问题的更多信息。 【参考方案1】:

这不只是一个选择加入,这意味着在包含 hashbangs 的页面上使用它是多余的(无害的)?!据我了解,如果在 URI 中检测到 hashbang,爬虫会自动查找 _escaped_fragment_-page。只有在 URI 中没有 hashbang 时,您才能建议爬虫使用元标记附加 _escaped_fragment_ 参数。这样,如果设置了参数,您就可以提供不同的内容。这就是一些 blogspot 主题的工作方式(例如 http://illegalcartoon.blogspot.de/)。

我没听错你的问题吗?

更新:

使用 _escaped_fragment_ 的 AJAX 抓取方案已被 Google 弃用。以下是相关博文的引述:

今天,只要您不阻止 Googlebot 抓取您的 javascript 或 CSS 文件,我们通常能够像现代浏览器一样呈现和理解您的网页。

在此处阅读完整文章:https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html

Tl;dr:停止使用这个!

【讨论】:

这也是我一直在想的。只是这篇 Google 论文中的措辞让我有点害怕:developers.google.com/webmasters/ajax-crawling/docs/…“元标记可能只出现在没有哈希片段的页面中” 好吧,这句话有点混乱。但作为概念证明,我可以提供以下链接:google.com/search?q=site:emanuel.kodingen.com/wordpress 这些是我的 Backboned-wordpress-theme 的演示页面的爬取结果。所有页面都包含 hashbang 和元标记。然而,它们已被完全索引。也许这句话有点模棱两可,他们实际上想说,您可能不会使用带有元标记的通用哈希片段(www.domain.com#foo)!?! o_O 现在这一切都被弃用了吗? googlewebmastercentral.blogspot.jp/2015/10/… 是的,Google 现在可以让它的爬虫运行 JS。不再需要后备内容。 您能否更新答案...该标签应该在 2018 年夏天和圣诞节之后发布...谢谢 :)【参考方案2】:

根据google 的解释,如果页面有&lt;meta name="fragment" content="!"&gt;

为了让没有哈希片段的页面被索引,你包括一个 页面 HTML 头部的特殊元标记。重要:制作 确保您仅将此解决方案用于包含 Ajax 内容的页面。 将此添加到非 Ajax 页面不会产生任何好处,并且会增加额外的负载 在您的服务器和 Google 的服务器上。

这个标签向爬虫表明它应该抓取丑陋的 此 URL 的版本。根据上述协议,爬虫将 临时将漂亮的 URL 映射到相应的丑 URL。其他 的话,如果你放入页面 www.example.com,爬虫会临时将此网址映射到 www.example.com?_escaped_fragment_= 并将向您的 服务器。然后,您的服务器应返回相应的 HTML 快照 到 www.example.com。

因此,当服务器收到类似www.example.com?_escaped_fragment_= 的请求时,您可以在没有name="fragment" content="!" 的情况下将快照返回给他

【讨论】:

啊-所以也许这是我的错误。这是否意味着,当谷歌爬虫要求“域/路径?_escaped_frament_=”时,必须删除元标记?因为我正在使用带有“元标记”的技术,但它不起作用。爬虫只爬取普通版本(而不是 html 快照)。 似乎已弃用

以上是关于包含 <meta name="fragment" content="!"> 对带有 hashbang 的页面有害吗?的主要内容,如果未能解决你的问题,请参考以下文章

<meta name="" content=">的作用

检查 <meta-data android:name="com.google.android.geo.API_KEY" android:value="your AP

<meta name="title"> 标签和 <title></title> 标签的区别

html 代码 meta name="Copyright" content="Tencent"的意思

不是<meta>的属性都有哪些?

详解 <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=