Index: django/contrib/sitemaps/__init__.py
===================================================================
--- django/contrib/sitemaps/__init__.py	(revision 10957)
+++ django/contrib/sitemaps/__init__.py	(working copy)
@@ -27,10 +27,11 @@
     if sitemap_url is None:
         raise SitemapNotFound("You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.")
 
-    from django.contrib.sites.models import Site
-    current_site = Site.objects.get_current()
-    url = "http://%s%s" % (current_site.domain, sitemap_url)
-    params = urllib.urlencode({'sitemap':url})
+    if '://' not in sitemap_url:
+        from django.contrib.sites.models import Site
+        current_site = Site.objects.get_current()
+        sitemap_url = "http://%s%s" % (current_site.domain, sitemap_url)
+    params = urllib.urlencode({'sitemap': sitemap_url})
     urllib.urlopen("%s?%s" % (ping_url, params))
 
 class Sitemap(object):
@@ -60,11 +61,10 @@
     paginator = property(_get_paginator)
 
     def get_urls(self, page=1):
-        from django.contrib.sites.models import Site
-        current_site = Site.objects.get_current()
         urls = []
         for item in self.paginator.page(page).object_list:
-            loc = "http://%s%s" % (current_site.domain, self.__get('location', item))
+            loc = "http://%s%s" % (self.get_domain(),
+                                   self.__get('location', item))
             url_info = {
                 'location':   loc,
                 'lastmod':    self.__get('lastmod', item, None),
@@ -74,6 +74,12 @@
             urls.append(url_info)
         return urls
 
+    def get_domain(self):
+        # This method can be overridden to avoid the requirement of the sites
+        # contrib application.
+        from django.contrib.sites.models import Site
+        return Site.objects.get_current().domain
+
 class FlatPageSitemap(Sitemap):
     def items(self):
         from django.contrib.sites.models import Site
