Index: django/core/urlresolvers.py
===================================================================
--- django/core/urlresolvers.py	(revision 5722)
+++ django/core/urlresolvers.py	(working copy)
@@ -212,14 +212,18 @@
         return '<%s %s %s>' % (self.__class__.__name__, self.urlconf_name, self.regex.pattern)
 
     def _get_reverse_dict(self):
+        def _add(key, val):
+            self._reverse_dict.setdefault(key, []).append(val)
         if not self._reverse_dict and hasattr(self.urlconf_module, 'urlpatterns'):
             for pattern in reversed(self.urlconf_module.urlpatterns):
                 if isinstance(pattern, RegexURLResolver):
-                    for key, value in pattern.reverse_dict.iteritems():
-                        self._reverse_dict[key] = (pattern,) + value
+                    for key, values in pattern.reverse_dict.iteritems():
+                        for value in values:
+                            _add(key, (pattern,) + value)
                 else:
-                    self._reverse_dict[pattern.callback] = (pattern,)
-                    self._reverse_dict[pattern.name] = (pattern,)
+                    _add(pattern.callback, (pattern,))
+                    if pattern.name:
+                        _add(pattern.name, (pattern,))
         return self._reverse_dict
     reverse_dict = property(_get_reverse_dict)
 
@@ -278,8 +282,12 @@
             lookup_view = get_callable(lookup_view, True)
         except (ImportError, AttributeError):
             raise NoReverseMatch
-        if lookup_view in self.reverse_dict:
-            return u''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]])
+        for k, v in self.reverse_dict.iteritems():
+            print "%s -> %s" % (repr(k), repr(v))
+        for candidate in self.reverse_dict.get(lookup_view, []):
+            result = u''.join([reverse_helper(part.regex, *args, **kwargs) for part in candidate])
+            if self.resolve(u'/' + result) == (lookup_view, args, kwargs):
+                return result
         raise NoReverseMatch
 
     def reverse_helper(self, lookup_view, *args, **kwargs):
