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().