我有一个文本段落,可能有外部或内部网址。用户将输入此文本。因此,我希望外部链接应添加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添加到外部链接?
答案 0 :(得分:2)
请参阅this link以获取我的示例。使用正则表达式<a href=["']((http://www.mysite.com)(/.*?){0,1}|/.*?)["']\>(.*?)\<\/a\>
来使所有链接与您的内部链接匹配。
答案 1 :(得分:1)
在Ruby on Rails中,您可以使用正则表达式查找网址并为其添加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
`
干杯!