2013-08-02 85 views
0

我有一個文字段落,它可能有外部或內部URL。用戶將輸入此文本。所以,我希望外部鏈接應該添加rel=nofollow和內部鏈接將不會有rel=nofollow屬性。Ruby On Rails 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

請乞求人們不要downvote您的帖子是可悲的,只是增加了不必要的混亂。不要一直這樣做。 –

+0

@CodyGray你是對的。但是我發現有些人不會閱讀內容,只是標題和讚譽而已。對不起,我會通過以上評論刪除。 –

回答

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 

`

乾杯!

2

查看this link我的例子。是使用正則表達式<a href=["']((http://www.mysite.com)(/.*?){0,1}|/.*?)["']\>(.*?)\<\/a\>來獲得所有鏈接匹配您的內部鏈接。

+0

感謝它幫助我完成了由我編寫的跟蹤方法。 –