? 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); }