Index: includes/bootstrap.inc --- includes/bootstrap.inc.orig 2008-02-11 15:36:21 +0100 +++ includes/bootstrap.inc 2008-04-09 20:47:49 +0200 @@ -272,6 +272,7 @@ */ function conf_init() { global $base_url, $base_path, $base_root; + global $base_url_local; // Export the following settings.php variables to the global namespace global $db_url, $db_prefix, $cookie_domain, $conf, $installed_profile, $update_free_access; @@ -723,9 +724,22 @@ * generate an equivalent using other environment variables. */ function request_uri() { + global $base_url; + global $base_url_local; if (isset($_SERVER['REQUEST_URI'])) { $uri = $_SERVER['REQUEST_URI']; + if (isset($base_url) && isset($base_url_local)) { + $parts = parse_url($base_url_local); + if ( strlen($uri) >= strlen($base_url_local) + && substr($uri, 0, strlen($base_url_local)) == $base_url_local) { + $uri = $base_url . substr($uri, strlen($base_url_local)); + } + elseif ( strlen($uri) >= strlen($parts["path"]) + && substr($uri, 0, strlen($parts["path"])) == $parts["path"]) { + $uri = $base_url . substr($uri, strlen($parts["path"])); + } + } } else { if (isset($_SERVER['argv'])) { Index: sites/default/default.settings.php --- sites/default/default.settings.php.orig 2007-12-20 10:35:10 +0100 +++ sites/default/default.settings.php 2008-04-09 20:47:32 +0200 @@ -126,6 +126,24 @@ # $base_url = 'http://www.example.com'; // NO trailing slash! /** + * Local Base URL (optional). + * + * If you are running Drupal behind a reverse proxy, $base_url (see above) + * usually points to the URL of the reverse proxy. Drupal uses this for + * all sorts of external URLs. In order to correctly calculate sub-URLs + * below $base_url for embedded HTML forms, Drupal also has to know the + * URL on the local/origin server under which Drupal is contacted by the + * reverse proxy. This is what $base_url_local is for. + * + * Examples: + * $base_url_local = 'http://www.example.com:8080/drupal'; + * + * It is not allowed to have a trailing slash; Drupal will add it + * for you. + */ +# $base_url_local = 'http://www.example.com:8080/drupal'; // NO trailing slash! + +/** * PHP settings: * * To see what PHP settings are possible, including whether they can