【问题标题】:Ruby On Rails nofollow to non internal linkRuby On Rails nofollow 到非内部链接
【发布时间】:2013-08-02 08:45:52
【问题描述】:

我有一个文本段落,其中可能有外部或内部 URL。用户将输入此文本。所以,我希望外部链接应该添加rel=nofollow,而内部链接不会有rel=nofollow 属性。

内部链接可以是:

 <a href=http://www.mysite.com"> My Site </a> 


&lt;a href="/articles/1-world-cup-cricket-2015"&gt; World cup schedule &lt;/a&gt;

外部链接和往常一样……

我当前的功能是将rel=nofollow 添加到所有内部和外部链接。

def add_nofollow html
  html.gsub(/\<a href=["'](.*?)["']\>(.*?)\<\/a\>/mi, '<a href="\1" rel="nofollow" target="_new" >\2</a>')
end

问题是如何仅将 rel=nofollow 添加到外部链接?

【问题讨论】:

  • 拜托,乞求人们不要对您的帖子投反对票是可悲的,只会增加不必要的混乱。不要一直这样做。
  • @CodyGray 你是对的。但我发现有些人不阅读内容,而只阅读标题和投反对票。抱歉,我将通过上述评论删除。

标签: ruby-on-rails ruby regex nofollow


【解决方案1】:

我的例子见this link。是使用正则表达式&lt;a href=["']((http://www.mysite.com)(/.*?){0,1}|/.*?)["']\&gt;(.*?)\&lt;\/a\&gt; 来获取与您的内部链接匹配的所有链接。

【讨论】:

  • 感谢它帮助我完成了我写的follow方法。
【解决方案2】:

在 Ruby on Rails 中,您可以使用正则表达式来查找 url 并将 rel=nofollow 添加到它们。

def add_nofollow html

 html.scan(/(\<a href=["'].*?["']\>.*?\<\/a\>)/).flatten.each do |link|
   if link.match(/\<a href=["'](http:\/\/|www){0,1}((localhost:3000|mysite.com)(\/.*?){0,1}|\/.*?)["']\>(.*?)\<\/a\>/)
    else
    link.match(/(\<a href=["'](.*?)["']\>(.*?)\<\/a\>)/)
    html.gsub!(link, "<a href='#{$2}' rel='nofollow' target='_new' >#{$3}</a>" )
    end
  end
  html
end

`

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2011-03-23
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多