Index: wp-includes/canonical.php
===================================================================
--- wp-includes/canonical.php	(revision 17488)
+++ wp-includes/canonical.php	(working copy)
@@ -78,6 +78,23 @@
 				$redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id', 'post_type'), $redirect['query']);
 		}
 	}
+	
+	if( is_category() && ! $wp_rewrite->using_permalinks() ) {
+		if( isset( $_GET['cat'] ) ) {
+			$categories = explode( ',', $_GET['cat'] );
+			if( count( $categories ) == 1 ) {
+				if( $redirect_url = get_category_link( $_GET['cat'] ) )
+					$redirect['query'] = remove_query_arg( array('cat', 'category', 'category_name'), $redirect['query'] );
+			} else {
+				$category_ids = array_map( 'intval', $categories );
+				$category_ids = implode( ',', $category_ids );
+				$category_slugs = $wpdb->get_col( "SELECT t.slug FROM $wpdb->terms as t JOIN $wpdb->term_taxonomy as tt ON(t.term_id=tt.term_taxonomy_id) WHERE t.term_id IN($category_ids) AND tt.taxonomy='category'" );
+				$redirect_url = home_url('/');
+				$redirect_url = add_query_arg( array( 'category_name' => implode( ',', $category_slugs ) ), $redirect_url );
+				$redirect['query'] = remove_query_arg( array( 'cat', 'category', 'category_name' ), $redirect['query'] );
+			}
+		}
+	}
 
 	// These tests give us a WP-generated permalink
 	if ( is_404() ) {
