Index: django/contrib/syndication/feeds.py
===================================================================
--- django/contrib/syndication/feeds.py	(revision 6837)
+++ django/contrib/syndication/feeds.py	(working copy)
@@ -55,18 +55,18 @@
                 return attr()
         return attr
 
-    def get_feed(self, url=None):
+    def get_object(self, bits):
+        return None
+
+    def get_feed(self, url=""):
         """
         Returns a feedgenerator.DefaultFeed object, fully populated, for
         this feed. Raises FeedDoesNotExist for invalid parameters.
         """
-        if url:
-            try:
-                obj = self.get_object(url.split('/'))
-            except (AttributeError, ObjectDoesNotExist):
-                raise FeedDoesNotExist
-        else:
-            obj = None
+        try:
+            obj = self.get_object([bit for bit in url.split('/') if bit])
+        except (AttributeError, ObjectDoesNotExist):
+            raise FeedDoesNotExist
 
         if Site._meta.installed:
             current_site = Site.objects.get_current()
Index: tests/regressiontests/syndication/__init__.py
===================================================================
Index: tests/regressiontests/syndication/tests.py
===================================================================
--- tests/regressiontests/syndication/tests.py	(revision 0)
+++ tests/regressiontests/syndication/tests.py	(revision 0)
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+
+from django.test import TestCase 
+from django.test.client import Client
+
+class SyndicationFeedTest(TestCase):
+    def test_complex_base_url(self):
+        """
+        tests that that the base url for a complex feed doesn't raise a 500
+        exception
+        """
+        c = Client()
+        response = c.get('/syndication/feeds/complex/')
+        self.assertEquals(response.status_code, 404)
Index: tests/regressiontests/syndication/models.py
===================================================================
Index: tests/regressiontests/syndication/urls.py
===================================================================
--- tests/regressiontests/syndication/urls.py	(revision 0)
+++ tests/regressiontests/syndication/urls.py	(revision 0)
@@ -0,0 +1,18 @@
+from django.conf.urls.defaults import patterns
+from django.core.exceptions import ObjectDoesNotExist
+from django.contrib.syndication import feeds
+
+
+class ComplexFeed(feeds.Feed):
+    def get_object(self, bits):
+        if len(bits) != 1:
+            raise ObjectDoesNotExist
+        return None
+
+
+urlpatterns = patterns('',
+    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {
+        'feed_dict': dict(
+            complex = ComplexFeed,
+        )}),
+)
Index: docs/syndication_feeds.txt
===================================================================
--- docs/syndication_feeds.txt	(revision 6837)
+++ docs/syndication_feeds.txt	(working copy)
@@ -243,6 +243,14 @@
       raises ``Beat.DoesNotExist`` on failure, and ``Beat.DoesNotExist`` is a
       subclass of ``ObjectDoesNotExist``. Raising ``ObjectDoesNotExist`` in
       ``get_object()`` tells Django to produce a 404 error for that request.
+
+      **New in Django development version:** Note that get_object also gets a
+      chance to handle the ``/rss/beats/`` url.  In this case bits will be
+      an empty list.  In our example, since ``len(bits) != 1`` an
+      ``ObjectDoesNotExist`` exception will be raised, so ``/rss/beats/`` will
+      generate a 404 page.  But you can handle this case however you like.  For
+      example you could generate a combined feed for all beats.
+
     * To generate the feed's ``<title>``, ``<link>`` and ``<description>``,
       Django uses the ``title()``, ``link()`` and ``description()`` methods. In
       the previous example, they were simple string class attributes, but this
Index: tests/urls.py
===================================================================
--- tests/urls.py	(revision 6837)
+++ tests/urls.py	(working copy)
@@ -14,4 +14,7 @@
     
     # django built-in views
     (r'^views/', include('regressiontests.views.urls')),
+
+    # test urlconf for syndication tests
+    (r'^syndication/', include('regressiontests.syndication.urls')),
 )
