Index: wp-admin/admin.php
===================================================================
--- wp-admin/admin.php	(revision 25008)
+++ wp-admin/admin.php	(working copy)
@@ -66,6 +66,10 @@
 
 require_once(ABSPATH . 'wp-admin/includes/admin.php');
 
+if( is_multisite() ) {
+	invalid_site_admin_redirect();
+}
+
 auth_redirect();
 
 // Schedule trash collection
Index: wp-admin/includes/ms.php
===================================================================
--- wp-admin/includes/ms.php	(revision 25008)
+++ wp-admin/includes/ms.php	(working copy)
@@ -675,3 +675,30 @@
 </script>
 <?php
 }
+
+function invalid_site_admin_redirect() { 
+	 
+	global $current_blog; 
+	 
+	# Unless admin_url path matches base of current URL (up to wp-admin), redirect to canonical URL 
+	if( preg_match( '/(.*\/wp-admin\/)(.*?)$/', $_SERVER['REQUEST_URI'], $requested_admin_url ) &&
+		trailingslashit( $requested_admin_url[1] ) !== parse_url( admin_url(), PHP_URL_PATH ) ) {
+		
+		wp_redirect(  
+			add_query_arg(
+				array( 'error' => 'invalid_site' ),  
+				get_admin_url( $current_blog->blog_id, $requested_admin_url[2] ) 
+			)
+		); 
+	}
+	 
+	if( isset( $_GET['error'] ) && $_GET['error'] == 'invalid_site' ) { 
+			/** We have no idea what invalid page was requested, so fire this notice for all admin pages */ 
+			add_action( 'all_admin_notices', 'invalid_site_admin_notice' ); 
+	} 
+
+} 
+
+function invalid_site_admin_notice() { 
+	echo '<div class="update-nag">' . __('You were redirected here because you requested the dashboard for a site that does not exist.') . '</div>'; 
+}
\ No newline at end of file
