【问题标题】:How to override an existing meta tag in html?如何覆盖 html 中现有的元标记?
【发布时间】:2016-03-11 09:46:58
【问题描述】:

我有一个带有这个元标记的 html 文档:

<meta name="robots" content="noindex, nofollow"> 

我想将此标记保留在头部,但用这个新声明覆盖它:

<meta name="robots" content="index, follow">

我应该把覆盖标签放在第一个之前还是之后?

【问题讨论】:

  • 为什么要保留第一个?
  • 我想保留第一个,因为它包含在 99% 的页面上使用的模板中。
  • 您可以使用 jquery $("meta[name='robots']").attr('content', 'noindex, nofollow'); 替换内容;
  • 谢谢,但这并不是真正的问题。问题是:从我的例子来看,如果两个指令具有相同的名称,浏览器将采用哪个指令:第一个还是最后一个?
  • 它将替换那些具有相同名称的人 name="robots"

标签: html web-crawler meta-tags


【解决方案1】:

如果我们只考虑 robots 元标记:

最好的方法是在页面输出中只包含正确的元标记。


没有覆盖元标记的 HTML 约定,因此使用它们的不同服务(浏览器、搜索引擎等)会以不同的方式解释具有多个冲突元标记的效果。

在您的情况下,无法保证不同的搜索引擎会如何遵循您的机器人指令。其中一些可能使用第一次出现,其他人可能使用最后一次出现,而 Google 可能会使用更严格的说明。

这里提到了最后一个 Official Google Blog Post,但它是从 2007 年开始的,情况可能会发生变化。


虽然有一种方法可以使用 Jquery 动态更改元标记的内容,方法是:

$("meta[name='robots']").attr('content', 'index, follow'); 

同样不能保证这会产生预期的效果。 Google 在抓取您的页面时会执行 JavaScript(我不确定它是否会遵守这一点),但其他搜索引擎可能不会。

关于 Google 在抓取页面时执行 JavaScript 的其他信息:

【讨论】:

  • 根据这个答案,我想说最好通过服务器端包含您的 meta 标记 - 检查它是否是所需页面,如果是,则放入 index, follow ,否则放入noindex, nofollow.
  • 当搜索引擎爬虫不执行 javascript 时,通过 javascript 更改此类数据是毫无意义的。
  • @GeraldSchneider 这就是为什么我建议最好的解决方案是在页面输出中最初只包含正确的元标记。顺便说一句,我包含了对 Google 官方博客的引用以及 Google 在抓取您的页面时正在执行 JavaScript 的一些独立测试。
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多