0

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

内部链接可以是:

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

或者
<a href="/articles/1-world-cup-cricket-2015"> World cup schedule </a>

外部链接和往常一样...

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

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

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

4

2 回答 2

2

请参阅此链接以获取我的示例。是使用正则表达式<a href=["']((http://www.mysite.com)(/.*?){0,1}|/.*?)["']\>(.*?)\<\/a\>来获取与您的内部链接匹配的所有链接。

于 2013-08-02T09:02:08.767 回答
1

在 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

`

干杯!

于 2013-08-02T12:59:48.030 回答