【问题标题】:Set target=“_blank” and rel=“nofollow, noindex, noreferrer” to all links将 target=“_blank” 和 rel=“nofollow, noindex, noreferrer” 设置为所有链接
【发布时间】:2019-02-15 00:50:41
【问题描述】:

似乎有一种方法可以将外部链接设置为默认不关注,以避免通过关注外部网站的链接丢失重要的链接汁。如果我们能够自动化,这将非常好,并且会使事情变得更容易。

我有很多关于 Markdown 的文章/博客文章,它们是在中间人部署时生成的。在文本中每个链接的末尾手动添加 {:target="_blank" rel="nofollow, noindex, noreferrer"} 很麻烦。

我研究过可以添加

<meta name =”robots” content=”index”>

但我猜必须有一种更精细的方法是为单个链接包含 noFollow 标记。

有没有办法在 config.rb 中设置链接属性,使其设置如下?

target="_blank" rel="nofollow, noindex, noreferrer"

【问题讨论】:

  • 您是否使用 RedCarpet 来渲染您的 MD?如果是这样,您可以指定link attributes
  • 错误符号:rel 值中不需要逗号。

标签: ruby-on-rails ruby middleman


【解决方案1】:

这里的一个好方法是在app/helpers 下创建您自己的辅助方法并在您的视图中使用它

像这样的:

def link_to_new_window(name = nil, options = nil, html_options = {}, &block)
  html_options[:target] = '_blank'
  html_options[:rel] = 'nofollow, noindex, noreferrer'
  helper.link_to(name, options, html_options, &block)
end

UPD 我看到您正在使用middleman。没有太多经验,但你可以像这样装饰 - 几乎任何辅助方法

注意helper 调用,它允许您在未明确包含时使用 Rails 助手

原来的装饰方法可以这样做:

module LinkToWithNewWindow
  def link_to(name = nil, options = nil, html_options = {}, &block)
    html_options[:target] = '_blank'
    html_options[:rel] = 'nofollow, noindex, noreferrer'
    super(name, options, html_options, &block)
  end
end
::ActionView::Helpers::UrlHelper.prepend LinkToWithNewWindow

如果需要,将 ActionView 替换为您使用的助手 但同样,风险自负

【讨论】:

  • 如果我像上面一样添加辅助方法 - 然后我是否需要像您提到的视图中的用法一样在视图中一一更改链接?我在 md 中有多个链接,如果是这种情况,那么逐个浏览会很麻烦。
  • @nothingme 最好逐个更新它们,而不是为所有链接隐式添加此属性。它应该像 查找和替换 一样简单,但这取决于您,您可以为助手添加一个装饰器。我会用一个例子来更新答案
  • @nothingme 查看最后的编辑。我希望它会有所帮助
猜你喜欢
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多