diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index eef8349..a35287e 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -302,8 +302,7 @@ class RegexURLResolver(object):
     def resolve500(self):
         return self._resolve_special('500')
 
-    def reverse(self, lookup_view, *args, **kwargs):    
-        prefix = kwargs.pop('__DJANGO_REVERSE_PREFIX','')
+    def reverse(self, lookup_view, *args, **kwargs):
         if args and kwargs:
             raise ValueError("Don't mix *args and **kwargs in call to reverse()!")
         try:
@@ -311,20 +310,19 @@ class RegexURLResolver(object):
         except (ImportError, AttributeError), e:
             raise NoReverseMatch("Error importing '%s': %s." % (lookup_view, e))
         possibilities = self.reverse_dict.getlist(lookup_view)
-        prefix_norm, prefix_args = normalize(prefix)[0]
         for possibility, pattern in possibilities:
             for result, params in possibility:
                 if args:
-                    if len(args) != len(params) + len(prefix_args):
+                    if len(args) != len(params):
                         continue
                     unicode_args = [force_unicode(val) for val in args]
-                    candidate =  (prefix_norm + result) % dict(zip(params, unicode_args))
+                    candidate =  result % dict(zip(params, unicode_args))
                 else:
-                    if set(kwargs.keys()) != (set(params)|set(prefix_args)):
+                    if set(kwargs.keys()) != set(params):
                         continue
                     unicode_kwargs = dict([(k, force_unicode(v)) for (k, v) in kwargs.items()])
-                    candidate = (prefix_norm + result) % unicode_kwargs
-                if re.search(u'^%s%s' % (prefix, pattern), candidate, re.UNICODE):
+                    candidate = result % unicode_kwargs
+                if re.search(u'^%s' % pattern, candidate, re.UNICODE):
                     return candidate
         # lookup_view can be URL label, or dotted path, or callable, Any of
         # these can be passed in at the top, but callables are not friendly in
@@ -388,8 +386,9 @@ def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current
                     raise NoReverseMatch("%s is not a registered namespace inside '%s'" % (key, ':'.join(resolved_path)))
                 else:
                     raise NoReverseMatch("%s is not a registered namespace" % key)
-    kwargs['__DJANGO_REVERSE_PREFIX'] = prefix
-    return iri_to_uri(resolver.reverse(view, *args, **kwargs))
+
+    return iri_to_uri(u'%s%s' % (prefix, resolver.reverse(view,
+            *args, **kwargs)))
 
 def clear_url_caches():
     global _resolver_cache
diff --git a/tests/regressiontests/urlpatterns_reverse/namespace_urls.py b/tests/regressiontests/urlpatterns_reverse/namespace_urls.py
index e3094e6..3d34049 100644
--- a/tests/regressiontests/urlpatterns_reverse/namespace_urls.py
+++ b/tests/regressiontests/urlpatterns_reverse/namespace_urls.py
@@ -37,9 +37,9 @@ urlpatterns = patterns('regressiontests.urlpatterns_reverse.views',
     (r'^default/', include(default_testobj.urls)),
 
     (r'^other1/', include(otherobj1.urls)),
-    (r'^other[246]/', include(otherobj2.urls)),
+    (r'^other2/', include(otherobj2.urls)),
 
-    (r'^ns-included[135]/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-ns1')),
+    (r'^ns-included1/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-ns1')),
     (r'^ns-included2/', include('regressiontests.urlpatterns_reverse.included_namespace_urls', namespace='inc-ns2')),
 
     (r'^included/', include('regressiontests.urlpatterns_reverse.included_namespace_urls')),
