Index: includes/bootstrap.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/bootstrap.inc,v
retrieving revision 1.359
diff -u -p -r1.359 bootstrap.inc
--- includes/bootstrap.inc	7 Mar 2010 07:44:18 -0000	1.359
+++ includes/bootstrap.inc	9 Mar 2010 23:55:01 -0000
@@ -2188,6 +2188,11 @@ function request_path() {
     $path = '';
   }
 
+  // Under certain conditions Apache's RewriteRule directive prepends the value
+  // assigned to $_GET['q] with a slash. Moreover we can always have a trailing
+  // slash in place, hence we need to normalize $_GET['q'].
+  $path = trim($path, '/');
+
   return $path;
 }
 
Index: includes/language.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/language.inc,v
retrieving revision 1.28
diff -u -p -r1.28 language.inc
--- includes/language.inc	7 Mar 2010 07:44:18 -0000	1.28
+++ includes/language.inc	9 Mar 2010 23:49:05 -0000
@@ -359,7 +359,7 @@ function language_from_default() {
  *    - The path without the prefix on success, the given path otherwise.
  */
 function language_url_split_prefix($path, $languages) {
-  $args = empty($path) ? array() : explode('/', trim($path, '/'));
+  $args = empty($path) ? array() : explode('/', $path);
   $prefix = array_shift($args);
 
   // Search prefix within enabled languages.
Index: includes/path.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/path.inc,v
retrieving revision 1.59
diff -u -p -r1.59 path.inc
--- includes/path.inc	7 Mar 2010 07:44:18 -0000	1.59
+++ includes/path.inc	9 Mar 2010 23:49:57 -0000
@@ -15,7 +15,7 @@
  */
 function drupal_path_initialize() {
   if (!empty($_GET['q'])) {
-    $_GET['q'] = drupal_get_normal_path(trim($_GET['q'], '/'));
+    $_GET['q'] = drupal_get_normal_path($_GET['q']);
   }
   else {
     $_GET['q'] = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
