Index: wp-includes/class-wp.php
===================================================================
--- wp-includes/class-wp.php	(revision 23348)
+++ wp-includes/class-wp.php	(working copy)
@@ -211,8 +211,13 @@
 
 						if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
 							// this is a verbose page match, lets check to be sure about it
-							if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
-						 		continue;
+							$page = get_page_by_path( $matches[ $varmatch[1] ] );
+							if ( ! $page )
+								continue;
+
+							$post_status_obj = get_post_status_object( $page->post_status );
+							if ( ! $post_status_obj->public && ! $post_status_obj->protected && ! $post_status_obj->private ) )
+								continue;
 						}
 
 						// Got a match.
Index: wp-includes/rewrite.php
===================================================================
--- wp-includes/rewrite.php	(revision 23348)
+++ wp-includes/rewrite.php	(working copy)
@@ -345,8 +345,13 @@
 
 			if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
 				// this is a verbose page match, lets check to be sure about it
-				if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
+				$page = get_page_by_path( $matches[ $varmatch[1] ] );
+				if ( ! $page )
 					continue;
+
+				$post_status_obj = get_post_status_object( $page->post_status );
+				if ( ! $post_status_obj->public && ! $post_status_obj->protected && ! $post_status_obj->private ) )
+					continue;
 			}
 
 			// Got a match.
