Index: trac/env.py
===================================================================
--- trac/env.py	(revision 6198)
+++ trac/env.py	(working copy)
@@ -80,12 +80,26 @@
         (''since 0.11'')""")
 
     base_url = Option('trac', 'base_url', '',
+        """Reference URL for the Trac deployment.
+        
+        This is the address that will be used when producing documents 
+        outside of the web browsing context, in order to produce canonical
+        URLs. 
+        
+        For example, this is the address that will be used in notification
+        mails.""")
+
+    base_url_for_redirect = BoolOption('trac', 'use_base_url_for_redirect',
+            False, 
         """Base URL of the Trac deployment.
         
-        In most configurations, Trac will automatically reconstruct the URL
+        In some configurations, Trac can't automatically reconstruct the URL
         that is used to access it automatically. However, in more complex
         setups, usually involving running Trac behind a HTTP proxy, you may
-        need to use this option to force Trac to use the correct URL.""")
+        need to use this option to force Trac to use the base_url also for
+        redirects. This introduces the obvious limitation that the environment
+        will become usable only from that host, as redirects are quite
+        frequent.""")
 
     project_name = Option('project', 'name', 'My Project',
         """Name of the project.""")
Index: trac/web/api.py
===================================================================
--- trac/web/api.py	(revision 6198)
+++ trac/web/api.py	(working copy)
@@ -276,10 +276,9 @@
 
         self.send_response(status)
         if not url.startswith('http://') and not url.startswith('https://'):
-            # Make sure the URL is absolute, honor base_url for
-            # scheme and host if present
+            # Make sure the URL is absolute
             scheme, host = urlparse.urlparse(self.base_url)[:2]
-            url = urlparse.urlunparse((scheme, host, url, None, None, None))                           
+            url = urlparse.urlunparse((scheme, host, url, None, None, None))
 
         self.send_header('Location', url)
         self.send_header('Content-Type', 'text/plain')
Index: trac/web/main.py
===================================================================
--- trac/web/main.py	(revision 6198)
+++ trac/web/main.py	(working copy)
@@ -371,7 +371,7 @@
     env = env_error = None
     try:
         env = open_environment(env_path, use_cache=not run_once)
-        if env.base_url:
+        if env.base_url_for_redirect:
             environ['trac.base_url'] = env.base_url
     except TracError, e:
         env_error = e

