Index: src/wp-includes/ms-load.php
===================================================================
--- src/wp-includes/ms-load.php	(revision 37177)
+++ src/wp-includes/ms-load.php	(working copy)
@@ -261,6 +261,190 @@
 }
 
 /**
+ * Given a requested domain and path, try to identify the network and site of a
+ * requested domain and path as part of the multisite bootstrap process.
+ *
+ * Usually, it's easier to query the site first, which then declares its network.
+ * In limited situations, we either can or must find the network first.
+ *
+ * If a network and site are found, a `true` response will be returned so that the
+ * request can be continued.
+ *
+ * If either a network or site is not found, either `false` or a URL string will be
+ * returned so that either a redirect can be occur or an error shown.
+ *
+ * Prior to 4.6.0, this was a procedural block in `ms-settings.php`. It should not be
+ * used outside of the multisite bootstrap.
+ *
+ * @since 4.6.0
+ *
+ * @global wpdb       $wpdb
+ * @global WP_Network $current_site The current network.
+ * @global WP_Site    $current_blog The current site.
+ *
+ * @param string $domain
+ * @param string $path
+ *
+ * @return bool|string True if bootstrap successfully populated `$current_blog` and `$current_site`.
+ *                     False if bootstrap could not be properly completed.
+ *                     Redirect URL if parts exist, but the request as a whole can not be fulfilled.
+ */
+function wp_setup_current_site_and_blog( $domain, $path ) {
+	global $wpdb, $current_site, $current_blog;
+
+	// If the network is defined in wp-config.php, we can simply use that.
+	if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
+		$current_site = new stdClass;
+		$current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
+		$current_site->domain = DOMAIN_CURRENT_SITE;
+		$current_site->path = PATH_CURRENT_SITE;
+		if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
+			$current_site->blog_id = BLOG_ID_CURRENT_SITE;
+		} elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
+			$current_site->blog_id = BLOGID_CURRENT_SITE;
+		}
+
+		if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
+			$current_blog = get_site_by_path( $domain, $path );
+		} elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
+			// If the current network has a path and also matches the domain and path of the request,
+			// we need to look for a site using the first path segment following the network's path.
+			$current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
+		} else {
+			// Otherwise, use the first path segment (as usual).
+			$current_blog = get_site_by_path( $domain, $path, 1 );
+		}
+
+	} elseif ( ! is_subdomain_install() ) {
+		/*
+		 * A "subdomain" install can be re-interpreted to mean "can support any domain".
+		 * If we're not dealing with one of these installs, then the important part is determining
+		 * the network first, because we need the network's path to identify any sites.
+		 */
+		if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
+			// Are there even two networks installed?
+			$one_network = $wpdb->get_row( "SELECT * FROM $wpdb->site LIMIT 2" ); // [sic]
+			if ( 1 === $wpdb->num_rows ) {
+				$current_site = new WP_Network( $one_network );
+				wp_cache_add( 'current_network', $current_site, 'site-options' );
+			} elseif ( 0 === $wpdb->num_rows ) {
+				// A network not found hook should fire here.
+				return false;
+			}
+		}
+		if ( empty( $current_site ) ) {
+			$current_site = WP_Network::get_by_path( $domain, $path, 1 );
+		}
+
+		if ( empty( $current_site ) ) {
+			/**
+			 * Fires when a network cannot be found based on the requested domain and path.
+			 *
+			 * At the time of this action, the only recourse is to redirect somewhere
+			 * and exit. If you want to declare a particular network, do so earlier.
+			 *
+			 * @since 4.4.0
+			 *
+			 * @param string $domain       The domain used to search for a network.
+			 * @param string $path         The path used to search for a path.
+			 */
+			do_action( 'ms_network_not_found', $domain, $path );
+
+			return false;
+		} elseif ( $path === $current_site->path ) {
+			$current_blog = get_site_by_path( $domain, $path );
+		} else {
+			// Search the network path + one more path segment (on top of the network path).
+			$current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
+		}
+	} else {
+		// Find the site by the domain and at most the first path segment.
+		$current_blog = get_site_by_path( $domain, $path, 1 );
+		if ( $current_blog ) {
+			$current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
+		} else {
+			// If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
+			$current_site = WP_Network::get_by_path( $domain, $path, 1 );
+		}
+	}
+
+	// The network declared by the site trumps any constants.
+	if ( $current_blog && $current_blog->site_id != $current_site->id ) {
+		$current_site = WP_Network::get_instance( $current_blog->site_id );
+	}
+
+	// No network has been found, bail.
+	if ( empty( $current_site ) ) {
+		/** This action is documented in wp-includes/ms-settings.php */
+		do_action( 'ms_network_not_found', $domain, $path );
+
+		return false;
+	}
+
+	// During activation of a new subdomain, the requested site does not yet exist.
+	if ( empty( $current_blog ) && wp_installing() ) {
+		$current_blog = new stdClass;
+		$current_blog->blog_id = $blog_id = 1;
+		$current_blog->public = 1;
+	}
+
+	// No site has been found, bail.
+	if ( empty( $current_blog ) ) {
+		// We're going to redirect to the network URL, with some possible modifications.
+		$scheme = is_ssl() ? 'https' : 'http';
+		$destination = "$scheme://{$current_site->domain}{$current_site->path}";
+
+		/**
+		 * Fires when a network can be determined but a site cannot.
+		 *
+		 * At the time of this action, the only recourse is to redirect somewhere
+		 * and exit. If you want to declare a particular site, do so earlier.
+		 *
+		 * @since 3.9.0
+		 *
+		 * @param object $current_site The network that had been determined.
+		 * @param string $domain       The domain used to search for a site.
+		 * @param string $path         The path used to search for a site.
+		 */
+		do_action( 'ms_site_not_found', $current_site, $domain, $path );
+
+		if ( is_subdomain_install() && ! defined( 'NOBLOGREDIRECT' ) ) {
+			// For a "subdomain" install, redirect to the signup form specifically.
+			$destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
+		} elseif ( is_subdomain_install() ) {
+			// For a "subdomain" install, the NOBLOGREDIRECT constant
+			// can be used to avoid a redirect to the signup form.
+			// Using the ms_site_not_found action is preferred to the constant.
+			if ( '%siteurl%' !== NOBLOGREDIRECT ) {
+				$destination = NOBLOGREDIRECT;
+			}
+		} elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
+			/*
+			 * If the domain we were searching for matches the network's domain,
+			 * it's no use redirecting back to ourselves -- it'll cause a loop.
+			 * As we couldn't find a site, we're simply not installed.
+			 */
+			return false;
+		}
+
+		return $destination;
+	}
+
+	// Figure out the current network's main site.
+	if ( empty( $current_site->blog_id ) ) {
+		if ( $current_blog->domain === $current_site->domain && $current_blog->path === $current_site->path ) {
+			$current_site->blog_id = $current_blog->blog_id;
+		} elseif ( ! $current_site->blog_id = wp_cache_get( 'network:' . $current_site->id . ':main_site', 'site-options' ) ) {
+			$current_site->blog_id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s",
+				$current_site->domain, $current_site->path ) );
+			wp_cache_add( 'network:' . $current_site->id . ':main_site', $current_site->blog_id, 'site-options' );
+		}
+	}
+
+	return true;
+}
+
+/**
  * Displays a failure message.
  *
  * Used when a blog's tables do not exist. Checks for a missing $wpdb->site table as well.
Index: src/wp-includes/ms-settings.php
===================================================================
--- src/wp-includes/ms-settings.php	(revision 37177)
+++ src/wp-includes/ms-settings.php	(working copy)
@@ -10,6 +10,18 @@
  * @since 3.0.0
  */
 
+/**
+ * Will hold objects representing the current network and current site.
+ *
+ * These may be populated through a custom `sunrise.php`. If not, then this
+ * file will attempt to populate them based on the current request.
+ *
+ * @global WP_Network $current_site The current network.
+ * @global object     $current_blog The current site.
+ * @since 3.0.0
+ */
+global $current_site, $current_blog;
+
 /** WP_Network class */
 require_once( ABSPATH . WPINC . '/class-wp-network.php' );
 
@@ -29,12 +41,23 @@
 /** Check for and define SUBDOMAIN_INSTALL and the deprecated VHOST constant. */
 ms_subdomain_constants();
 
+/**
+ * This block will process a request when either the current network or current site
+ * object is not yet populated in the global scope through something like `sunrise.php`.
+ *
+ * Possible outcomes:
+ *
+ * - `$current_site` and `$current_blog` are populated fully.
+ * - In a subdirectory configuration, if 0 networks exist, show an error.
+ * - In a subdirectory configuration, if no matching networks (domain/path) are found, show an error.
+ * - In either configuration, if no matching network is found, show an error.
+ * - In a subdomain configuration, if a network is found and a site is not found, redirect to signup.
+ * - In a subdirectory configuration, if a network is found and a site is not found, redirect to main site.
+ * - In a subdirectory configuration, if a network is found, a site is not found, and a redirect would
+ *   cause a loop, show an error.
+ */
 if ( !isset( $current_site ) || !isset( $current_blog ) ) {
 
-	// Given the domain and path, let's try to identify the network and site.
-	// Usually, it's easier to query the site first, which declares its network.
-	// In limited situations, though, we either can or must find the network first.
-
 	$domain = strtolower( stripslashes( $_SERVER['HTTP_HOST'] ) );
 	if ( substr( $domain, -3 ) == ':80' ) {
 		$domain = substr( $domain, 0, -3 );
@@ -50,155 +73,18 @@
 	}
 	list( $path ) = explode( '?', $path );
 
-	// If the network is defined in wp-config.php, we can simply use that.
-	if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
-		$current_site = new stdClass;
-		$current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
-		$current_site->domain = DOMAIN_CURRENT_SITE;
-		$current_site->path = PATH_CURRENT_SITE;
-		if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) {
-			$current_site->blog_id = BLOG_ID_CURRENT_SITE;
-		} elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated.
-			$current_site->blog_id = BLOGID_CURRENT_SITE;
-		}
+	$bootstrap_result = wp_setup_current_site_and_blog( $domain, $path );
 
-		if ( 0 === strcasecmp( $current_site->domain, $domain ) && 0 === strcasecmp( $current_site->path, $path ) ) {
-			$current_blog = get_site_by_path( $domain, $path );
-		} elseif ( '/' !== $current_site->path && 0 === strcasecmp( $current_site->domain, $domain ) && 0 === stripos( $path, $current_site->path ) ) {
-			// If the current network has a path and also matches the domain and path of the request,
-			// we need to look for a site using the first path segment following the network's path.
-			$current_blog = get_site_by_path( $domain, $path, 1 + count( explode( '/', trim( $current_site->path, '/' ) ) ) );
-		} else {
-			// Otherwise, use the first path segment (as usual).
-			$current_blog = get_site_by_path( $domain, $path, 1 );
-		}
-
-	} elseif ( ! is_subdomain_install() ) {
-		/*
-		 * A "subdomain" install can be re-interpreted to mean "can support any domain".
-		 * If we're not dealing with one of these installs, then the important part is determining
-		 * the network first, because we need the network's path to identify any sites.
-		 */
-		if ( ! $current_site = wp_cache_get( 'current_network', 'site-options' ) ) {
-			// Are there even two networks installed?
-			$one_network = $wpdb->get_row( "SELECT * FROM $wpdb->site LIMIT 2" ); // [sic]
-			if ( 1 === $wpdb->num_rows ) {
-				$current_site = new WP_Network( $one_network );
-				wp_cache_add( 'current_network', $current_site, 'site-options' );
-			} elseif ( 0 === $wpdb->num_rows ) {
-				ms_not_installed( $domain, $path );
-			}
-		}
-		if ( empty( $current_site ) ) {
-			$current_site = WP_Network::get_by_path( $domain, $path, 1 );
-		}
-
-		if ( empty( $current_site ) ) {
-			/**
-			 * Fires when a network cannot be found based on the requested domain and path.
-			 *
-			 * At the time of this action, the only recourse is to redirect somewhere
-			 * and exit. If you want to declare a particular network, do so earlier.
-			 *
-			 * @since 4.4.0
-			 *
-			 * @param string $domain       The domain used to search for a network.
-			 * @param string $path         The path used to search for a path.
-			 */
-			do_action( 'ms_network_not_found', $domain, $path );
-
-			ms_not_installed( $domain, $path );
-		} elseif ( $path === $current_site->path ) {
-			$current_blog = get_site_by_path( $domain, $path );
-		} else {
-			// Search the network path + one more path segment (on top of the network path).
-			$current_blog = get_site_by_path( $domain, $path, substr_count( $current_site->path, '/' ) );
-		}
+	if ( true === $bootstrap_result ) {
+		// `$current_blog` and `$current_site are now populated.
+	} elseif ( false === $bootstrap_result ) {
+		ms_not_installed( $domain, $path );
 	} else {
-		// Find the site by the domain and at most the first path segment.
-		$current_blog = get_site_by_path( $domain, $path, 1 );
-		if ( $current_blog ) {
-			$current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
-		} else {
-			// If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
-			$current_site = WP_Network::get_by_path( $domain, $path, 1 );
-		}
-	}
-
-	// The network declared by the site trumps any constants.
-	if ( $current_blog && $current_blog->site_id != $current_site->id ) {
-		$current_site = WP_Network::get_instance( $current_blog->site_id );
-	}
-
-	// No network has been found, bail.
-	if ( empty( $current_site ) ) {
-		/** This action is documented in wp-includes/ms-settings.php */
-		do_action( 'ms_network_not_found', $domain, $path );
-
-		ms_not_installed( $domain, $path );
-	}
-
-	// During activation of a new subdomain, the requested site does not yet exist.
-	if ( empty( $current_blog ) && wp_installing() ) {
-		$current_blog = new stdClass;
-		$current_blog->blog_id = $blog_id = 1;
-		$current_blog->public = 1;
-	}
-
-	// No site has been found, bail.
-	if ( empty( $current_blog ) ) {
-		// We're going to redirect to the network URL, with some possible modifications.
-		$scheme = is_ssl() ? 'https' : 'http';
-		$destination = "$scheme://{$current_site->domain}{$current_site->path}";
-
-		/**
-		 * Fires when a network can be determined but a site cannot.
-		 *
-		 * At the time of this action, the only recourse is to redirect somewhere
-		 * and exit. If you want to declare a particular site, do so earlier.
-		 *
-		 * @since 3.9.0
-		 *
-		 * @param object $current_site The network that had been determined.
-		 * @param string $domain       The domain used to search for a site.
-		 * @param string $path         The path used to search for a site.
-		 */
-		do_action( 'ms_site_not_found', $current_site, $domain, $path );
-
-		if ( is_subdomain_install() && ! defined( 'NOBLOGREDIRECT' ) ) {
-			// For a "subdomain" install, redirect to the signup form specifically.
-			$destination .= 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
-		} elseif ( is_subdomain_install() ) {
-			// For a "subdomain" install, the NOBLOGREDIRECT constant
-			// can be used to avoid a redirect to the signup form.
-			// Using the ms_site_not_found action is preferred to the constant.
-			if ( '%siteurl%' !== NOBLOGREDIRECT ) {
-				$destination = NOBLOGREDIRECT;
-			}
-		} elseif ( 0 === strcasecmp( $current_site->domain, $domain ) ) {
-			/*
-			 * If the domain we were searching for matches the network's domain,
-			 * it's no use redirecting back to ourselves -- it'll cause a loop.
-			 * As we couldn't find a site, we're simply not installed.
-			 */
-			ms_not_installed( $domain, $path );
-		}
-
-		header( 'Location: ' . $destination );
+		header( 'Location: ' . $bootstrap_result );
 		exit;
 	}
+	unset( $bootstrap_result );
 
-	// Figure out the current network's main site.
-	if ( empty( $current_site->blog_id ) ) {
-		if ( $current_blog->domain === $current_site->domain && $current_blog->path === $current_site->path ) {
-			$current_site->blog_id = $current_blog->blog_id;
-		} elseif ( ! $current_site->blog_id = wp_cache_get( 'network:' . $current_site->id . ':main_site', 'site-options' ) ) {
-			$current_site->blog_id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s",
-				$current_site->domain, $current_site->path ) );
-			wp_cache_add( 'network:' . $current_site->id . ':main_site', $current_site->blog_id, 'site-options' );
-		}
-	}
-
 	$blog_id = $current_blog->blog_id;
 	$public  = $current_blog->public;
 
Index: tests/phpunit/tests/multisite/bootstrap.php
===================================================================
--- tests/phpunit/tests/multisite/bootstrap.php	(revision 37177)
+++ tests/phpunit/tests/multisite/bootstrap.php	(working copy)
@@ -23,7 +23,6 @@
 		parent::tearDown();
 	}
 
-
 	/**
 	 * @ticket 27003
 	 */
@@ -186,65 +185,185 @@
 		}
 		unset( $id );
 
-		$this->_setup_host_request( 'wordpress.org', '/' );
-		$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
+		$requests = array(
+			'wordpress.org/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/',
+				'response'   => true,
+				'message'    => false,
+			),
+			'wordpress.org/2014/04/23/hello-world/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/2014/04/23/hello-world/',
+				'response'   => true,
+				'message'    => 'A post or 404 on a site should result in the correct site and network.',
+			),
+			'wordpress.org/sample-page/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/sample-page/',
+				'response'   => true,
+				'message'    => 'A page or 404 on a site should result in the correct site and network.',
+			),
+			'wordpress.org/?p=1' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/?p=1',
+				'response'   => true,
+				'message'    => 'A non pretty-permalink URL should result in the correct site and network.',
+			),
+			'wordpress.org/wp-admin/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/wp-admin/',
+				'response'   => true,
+				'message'    => 'The standard admin area of the main site should load the correct site and network.',
+			),
+			'wordpress.org/wp-admin/network/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/',
+				'response'   => true,
+				'message'    => 'The network admin area of the main site should load the correct site and network.',
+			),
+			// See #17376, this is not correct behavior.
+			'wordpress.org/invalid/wp-admin/users.php' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/',
+				'response'   => true,
+				'message'    => 'If wp-admin is requested after an invalid path, the parent site and network should still load.',
+			),
+			// See #17376, this is not correct behavior.
+			'wordpress.org/invalid/wp-admin/network/users.php' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/',
+				'response'   => true,
+				'message'    => 'Valid',
+			),
+			'wordpress.org/foo/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/foo/',
+				'response'   => true,
+				'message'    => 'A valid sub-site should load the correct site and network.',
+			),
+			'wordpress.org/FOO/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/FOO/',
+				'response'   => true,
+				'message'    => 'A valid sub-site should not be case sensitive.',
+			),
+			'wordpress.org/foo/2014/04/23/hello-world/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/foo/2014/04/23/hello-world/',
+				'response'   => true,
+				'message'    => 'A post or 404 on a valid sub site should load the correct site and network.',
+			),
+			'wordpress.org/foo/sample-page/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/foo/sample-page/',
+				'response'   => true,
+				'message'    => 'A page or 404 on a valid sub site should load the correct site and network.',
+			),
+			'wordpress.org/foo/?p=1' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/foo/?p=1',
+				'response'   => true,
+				'message'    => 'A non pretty-permalink URL on a valid sub site should load the correct site and network.',
+			),
+			'wordpress.org/foo/wp-admin/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'     => 'wordpress.org',
+				'path'       => '/foo/wp-admin/',
+				'response'   => true,
+				'message'    => 'If wp-admin is requested on a valid sub-site, the correct network and site should load.',
+			),
+			// This will eventually redirect to the main site, but not during bootstrap.
+			'wordpress.org/foo/wp-admin/network/' => array(
+				'network_id' => $network_ids['wordpress.org/'],
+				'site_id'    => $ids['wordpress.org/foo/'],
+				'domain'    => 'wordpress.org',
+				'path'      => '/foo/wp-admin/network/',
+				'response'  => true,
+				'message'   => 'If the network admin is requested on a valid sub-site, the correct network and site should still populate.',
+			),
+			'make.wordpress.org/' => array(
+				'network_id' => $network_ids['make.wordpress.org/'],
+				'site_id'    => $ids['make.wordpress.org/'],
+				'domain'     => 'make.wordpress.org',
+				'path'       => '/',
+				'response'   => true,
+				'message'    => false,
+			),
+			'make.wordpress.org/foo/' => array(
+				'network_id' => $network_ids['make.wordpress.org/'],
+				'site_id'    => $ids['make.wordpress.org/foo/'],
+				'domain'     => 'make.wordpress.org',
+				'path'       => '/foo/',
+				'response'   => true,
+				'message'    => false,
+			),
+			'core.wordpress.org/' => array(
+				'domain'   => 'core.wordpress.org',
+				'path'     => '/',
+				'response' => 'http://wordpress.org/',
+				'message'  => 'An invalid subdomain should redirect to the top level network address.',
+			),
+			'invalidsite.org/' => array(
+				'domain'   => 'invalidsite.org',
+				'path'     => '/',
+				'response' => false,
+				'message'  => 'An invalid site/network should result in false.',
+			)
+		);
 
-		$this->_setup_host_request( 'wordpress.org', '/2014/04/23/hello-world/' );
-		$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
+		/**
+		 * Loop through the possible requests and assert that the proper string/true/false response is received
+		 * from `ms_bootstrap`.
+		 *
+		 * In cases where a response is successful, the blog_id and site_id properties of `$current_blog`
+		 * should also be checked to match expectations.
+		 */
+		foreach( $requests as $request_url => $request_data ) {
+			$message = $request_data['domain'] . $request_data['path'] . ' ' . $request_data['message'];
+			$this->assertEquals( $request_data['response'], wp_setup_current_site_and_blog( $request_data['domain'], $request_data['path'] ), $message );
 
-		$this->_setup_host_request( 'wordpress.org', '/sample-page/' );
-		$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
+			// For successful responses, also test the resulting site and network information.
+			if ( true === $request_data['response'] ) {
+				$this->assertEquals( $request_data['site_id'], $current_blog->blog_id );
+				$this->assertEquals( $request_data['network_id'], $current_blog->site_id );
+			}
+		}
 
-		$this->_setup_host_request( 'wordpress.org', '/?p=1' );
-		$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/wp-admin/' );
-		$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/foo/' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/FOO/' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/foo/2014/04/23/hello-world/' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/foo/sample-page/' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/foo/?p=1' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'wordpress.org', '/foo/wp-admin/' );
-		$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
-
 		// @todo not currently passing.
-		//$this->_setup_host_request( 'wordpress.org', '/foo/bar/' );
+		//wp_setup_current_site_and_blog( 'wordpress.org', '/foo/bar/' );
 		//$this->assertEquals( $ids['wordpress.org/foo/bar/'], $current_blog->blog_id );
 		//$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
 
-		$this->_setup_host_request( 'make.wordpress.org', '/' );
-		$this->assertEquals( $ids['make.wordpress.org/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
-
-		$this->_setup_host_request( 'make.wordpress.org', '/foo/' );
-		$this->assertEquals( $ids['make.wordpress.org/foo/'], $current_blog->blog_id );
-		$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
-
 		// Request the original tests domain and path to unpollute the stack.
-		$this->_setup_host_request( WP_TESTS_DOMAIN, '/' );
+		wp_setup_current_site_and_blog( WP_TESTS_DOMAIN, '/' );
 	}
 
 	/**
