내 레일 앱이 RDiscount를 사용하여 사용자가 제공 한 태그 다운 텍스트에서 HTML을 생성하고 있으며 앵커 태그에 rel = "nofollow"가없는 것으로 나타났습니다. 내 앱이 대중에게 공개되므로 큰 문제입니다. nofollow 링크를 활성화하는 방법이 있습니까? 아니면 더 나은 솔루션이 있습니까?RDiscount 출력에 nofollow 링크를 생성합니다.
감사합니다.
내 레일 앱이 RDiscount를 사용하여 사용자가 제공 한 태그 다운 텍스트에서 HTML을 생성하고 있으며 앵커 태그에 rel = "nofollow"가없는 것으로 나타났습니다. 내 앱이 대중에게 공개되므로 큰 문제입니다. nofollow 링크를 활성화하는 방법이 있습니까? 아니면 더 나은 솔루션이 있습니까?RDiscount 출력에 nofollow 링크를 생성합니다.
감사합니다.
이것은 확장 구문을 가진 루비 Markdown 파서 인 Kramdown에서만 가능하다고 생각합니다. 다시 구문 분석 RDiscount 출력에 의해, 나는이 해킹을 사용하고 그 동안
[link](test.html){:rel='nofollow'}
각 앵커에 확인해 = "따르지"를 추가 : 당신은 링크에서와 같이 그 짓을 했을까
def markdown(input)
html = RDiscount.new(input).to_html
doc = Nokogiri::HTML::DocumentFragment.parse(html)
doc.css("a").each do |link|
link['rel'] = 'nofollow'
end
doc.to_html
end
나는 이것이 정말로 markdown 파서에 의해 처리되어야한다고 생각하지만.
비슷한 작업을 수행하려면 모든 링크에 target="_new"
을 추가하십시오. Kramdown 및 사용자 정의 Kramdown::Converter::Html
클래스를 사용하여 해결했습니다.
내가 또한 응용 프로그램/도우미 이상적/application_helper.rb
def markdown(str)
Kramdown::Converter::MyHtml.convert(Kramdown::Document.new(str).root)[0].html_safe
end
을에서보기 도우미가
class Kramdown::Converter::MyHtml < Kramdown::Converter::Html
def convert_a(el, indent)
el.attr['target'] = '_new'
super
end
end
(일부 자동로드 경로에 kramdown/변환/my_html.rb)를 Kramdown::Converter::Html
서브 클래스를 정의 Kramdown::Document.new(str).to_my_html.html_safe
을 사용할 수 있어야하지만 Kramdown이 const_defined?
을 사용하여 변환기가 사용 가능하고 오토로더를 트리거하지 않는지 확인하기 위해 레일스 개발 모드에서 작동하도록 할 수는 없습니다. 이 문제를 해결하는 방법을 알고 있다면 의견을 보내주십시오.
이 방식으로 링크 수정을 지원하는 RDiscount에 feature request이 열려 있습니다.
곧 출시 될 RDiscount 2.1.5.x 릴리즈 중 하나가 예정되어 있습니다.
실제로 콘텐츠는 사용자가 제공하므로 SEO 스팸을 차단하는 수단으로 모든 링크에 rel = "nofollow"를 자동으로 추가해야합니다. stackoverflow 그것을 않습니다 생각합니다. – widgetycrank
그래도 고마워. – widgetycrank