Index: deals.isengard/httpdocs/sites/all/modules/globalredirect/globalredirect.module
===================================================================
--- deals.isengard.orig/httpdocs/sites/all/modules/globalredirect/globalredirect.module	2010-04-11 20:02:51.000000000 +0100
+++ deals.isengard/httpdocs/sites/all/modules/globalredirect/globalredirect.module	2010-04-11 21:08:44.000000000 +0100
@@ -145,13 +145,13 @@
     // Compare the request to the alias. This also works as a 'deslashing' agent. If we have a language prefix then prefix the alias
     if ($_REQUEST['q'] != $prefix . $alias) {
       // If it's not just a slash or user has deslash on, redirect
-      if (str_replace($prefix . $alias, '', $_REQUEST['q']) != '/' || $redirect_slash) {
+      if ((str_replace($prefix . $alias, '', $_REQUEST['q']) != '/' || $redirect_slash) && !is_absolute($alias)) {
         drupal_goto($alias, $query_string, NULL, 301);
       }
     }
 
     // If no alias was returned, the final check is to direct non-clean to clean - if clean is enabled
-    if ((variable_get('globalredirect_nonclean2clean', GLOBALREDIRECT_NONCLEAN2CLEAN_ENABLED) == GLOBALREDIRECT_NONCLEAN2CLEAN_ENABLED) && ((bool)variable_get('clean_url', 0)) && strpos(request_uri(), '?q=')) {
+    if ((variable_get('globalredirect_nonclean2clean', GLOBALREDIRECT_NONCLEAN2CLEAN_ENABLED) == GLOBALREDIRECT_NONCLEAN2CLEAN_ENABLED) && ((bool)variable_get('clean_url', 0)) && strpos(request_uri(), '?q=') && !is_absolute($request)) {
       drupal_goto($request, $query_string, NULL, 301);
     }
 
@@ -160,6 +160,10 @@
   }
 }
 
+function is_absolute($request) {
+  $colonpos = strpos($request, ':');
+  return ($colonpos !== FALSE && !preg_match('![/?#]!', substr($request, 0, $colonpos)));
+}
 
 /**
  * Implementation of hook_menu().
