? absolute_external_path.patch
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.951
diff -u -p -r1.951 common.inc
--- includes/common.inc	31 Jul 2009 19:56:09 -0000	1.951
+++ includes/common.inc	2 Aug 2009 12:32:41 -0000
@@ -2050,6 +2050,9 @@ function url($path = NULL, array $option
     // any / ? or #.
     $colonpos = strpos($path, ':');
     $options['external'] = ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && filter_xss_bad_protocol($path, FALSE) == check_plain($path));
+    if ($path[0]=='/') {
+    $options['external'] = TRUE;
+    }
   }
 
   // May need language dependent rewriting if language.inc is present.
Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.331
diff -u -p -r1.331 menu.inc
--- includes/menu.inc	30 Jul 2009 10:16:48 -0000	1.331
+++ includes/menu.inc	2 Aug 2009 12:32:42 -0000
@@ -2723,6 +2723,9 @@ function _menu_router_save($menu, $masks
  * Returns TRUE if a path is external (e.g. http://example.com).
  */
 function menu_path_is_external($path) {
+  if ($path[0]=='/') {
+    return TRUE;
+  }
   $colonpos = strpos($path, ':');
   return $colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && filter_xss_bad_protocol($path, FALSE) == check_plain($path);
 }
