2013-08-02 1 views
0

외부 또는 내부 URL이있을 수있는 텍스트 단락이 있습니다. 사용자가이 텍스트를 입력합니다. 그래서 외부 링크에 rel=nofollow을 추가하고 internl 링크에는 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 

질문은?

+0

게시물을 다운 다운하지 않는 사람들을 위해 애원하는 것은 불쌍하고 불필요한 혼란을 가중시킬뿐입니다. 계속하지 마십시오. –

+0

@CodyGray 네 말이 맞아. 하지만 일부 사람들은 내용을 읽지 않고 제목과 다운볼트 만 읽는다고합니다. 죄송합니다 위의 의견에 의해 제거됩니다. –

답변

1

Ruby on Rails에서는 regex를 사용하여 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

고마워요. 저에게 쓰여지는 방법에 따라 완료하는 데 많은 도움이됩니다. –