【问题标题】:Regular Expression to find all anchor tags without rel=nofollow then add it正则表达式查找所有没有 rel=nofollow 的锚标记,然后添加它
【发布时间】:2011-08-23 10:31:20
【问题描述】:

我们的 SEO 团队希望我们确保我们在论坛中发布的任何包含链接的帖子都具有 rel="nofollow" 属性。

如果在发布消息时使用了我们的链接工具,我们有代码可以将rel="nofollow" 放入其中,但我需要的是在输出每个帖子时调用的函数,以查找<a ...>foo</a> 的任何实例并替换为<a rel="nofollow" ...>foo</a>。显然,我想避免使用该属性来删除我遇到的每个锚标记,否则我们最终会得到包含重复 nofollow 属性的标记。

不幸的是,我不擅长正则表达式,我认为这将是完成它的最佳方式?

【问题讨论】:

  • 请不要尝试使用正则表达式解析 HTML。 HTML 不是常规语言。

标签: c# .net asp.net regex


【解决方案1】:

我建议使用 HTML 解析器,例如 HTML Agility Pack 来解析、查询和重新编写 HTML。

请参阅 here 以获得令人信服的解释,为什么 RegEx 在解析 HTML 时往往是一个坏主意。

【讨论】:

  • 我希望有人能链接到那个令人信服的解释:)
【解决方案2】:

如果您使用 jquery,客户端非常简单

$(function(){
  $("a").attr("rel","nofollow");
});

只需要这样

【讨论】:

  • 这里的问题是 rel="nofollow" 通常只被搜索引擎在抓取过程中使用,因此它们不会对传出链接进行排名。我认为这就是OP想要的。因此,除非机器人在检查之前运行所有 JavaScript,否则不会有任何影响。
  • @Jonathon 我明白你的意思。然而,我希望他们运行 JavaScript,因为不这样做意味着索引一些不真实的东西。但你很可能是对的
猜你喜欢
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多