Index: wp-includes/rewrite.php
===================================================================
--- wp-includes/rewrite.php	(revision 22355)
+++ wp-includes/rewrite.php	(working copy)
@@ -292,7 +292,7 @@
 
 	// Check to see if we are using rewrite rules
 	$rewrite = $wp_rewrite->wp_rewrite_rules();
-
+	
 	// Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options
 	if ( empty($rewrite) )
 		return 0;
@@ -332,6 +332,11 @@
 
 	$request = $url;
 
+	$post_type_query_vars = array();
+	foreach ( $GLOBALS['wp_post_types'] as $post_type => $t )
+		if ( $t->query_var )
+			$post_type_query_vars[$t->query_var] = $post_type;	
+	
 	// Look for matches.
 	$request_match = $request;
 	foreach ( (array)$rewrite as $match => $query) {
@@ -361,10 +366,15 @@
 			parse_str($query, $query_vars);
 			$query = array();
 			foreach ( (array) $query_vars as $key => $value ) {
-				if ( in_array($key, $wp->public_query_vars) )
+				if ( in_array($key, $wp->public_query_vars) ) {
 					$query[$key] = $value;
+					if ( isset( $post_type_query_vars[$key] ) ) {
+						$query['post_type'] = $post_type_query_vars[$key];
+						$query['name'] = $value;
+					}					
+				}
 			}
-
+			
 			// Do the query
 			$query = new WP_Query($query);
 			if ( !empty($query->posts) && $query->is_singular )
