nofollow filter

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from django.template import Library
import re

register = Library()

r_nofollow = re.compile('<a (?![^>]*nofollow)')
s_nofollow = '<a rel="nofollow" '

def nofollow(value):
    return r_nofollow.sub(s_nofollow, value)

register.filter(nofollow)

More like this

  1. hide emails with PIL - template filter by dekomote 4 years, 5 months ago
  2. Convert numbers in USA notation to brazilian notation by eOliva 5 years, 6 months ago
  3. Frequently used tags/filters for Jinja2 by mathwizard 5 years, 7 months ago
  4. A simple rest template filter by marinho 6 years, 5 months ago
  5. Compact list_filter with counter by fab10m 3 years, 2 months ago

Comments

polarbear (on July 24, 2007):

You can use also jQuery like:

$(".comment a").attr({rel: "nofollow"});

to add rel="nofollow" attribute to all a within class .comment

#

luckystarr (on September 7, 2007):

@polarbear

This would not work. I doubt that Google interprets JavaScript to check if it may or may not contribute the current sites pagerank to a link.

#

muffinresearch (on July 3, 2008):

One small issue with this is that the regex doesn't match when you just add the text "nofollow" somewhere in one of the links being tested e.g: an href with a fragment-identifier like so: "blah.com#nofollow"

The following regex prevents bypassing the filter in this way

re.compile('<a (?![^>]*rel=["\']nofollow[\'"])')

#

muhuk (on April 9, 2009):

building on muffinresearch's regex:

<a (?![^>]*rel=["\']nofollow[\'"])(?=[^>]*href=["\']http)

This matches only internal links. (hopefully)

#

(Forgotten your password?)