Index: src/wp-includes/ms-load.php
===================================================================
--- src/wp-includes/ms-load.php	(revision 27178)
+++ src/wp-includes/ms-load.php	(working copy)
@@ -145,7 +145,6 @@
 function get_network_by_path( $domain, $path ) {
 	global $wpdb;
 
-	$network_id = false;
 
 	$domains = $exact_domains = array( $domain );
 	$pieces = explode( '.', $domain );
@@ -191,9 +190,7 @@
 	}
 
 	if ( $found ) {
-		$network = wp_get_network( $network );
-
-		return $network;
+		return wp_get_network( $network );
 	}
 
 	return false;
@@ -220,62 +217,31 @@
 	return $network;
 }
 
-/**
- * Sets current_site object.
- *
- * @access private
- * @since 3.0.0
- * @return object $current_site object
- */
-function wpmu_current_site() {
-	global $wpdb, $current_site, $domain, $path;
+function get_site_by_path( $domain, $path ) {
+	global $wpdb;
 
-	if ( empty( $current_site ) )
-		$current_site = new stdClass;
+	if ( is_array( $path ) ) {
+		$paths = $path;
+		$path = $paths[0];
+	} else {
+		$paths = array( '/', $path );
+	}
 
-	// 1. If constants are defined, that's our network.
-	if ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) ) {
-		$current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1;
-		$current_site->domain = DOMAIN_CURRENT_SITE;
-		$current_site->path   = $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;
+	// @todo get_blog_details(), caching, etc.
+	if ( count( $paths ) > 1 ) {
+		$paths = "'" . implode( "', '", $wpdb->_escape( $paths ) ) . "'";
+		$site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs
+			WHERE domain = %s AND path IN ($paths) ORDER BY CHAR_LENGTH(path) DESC LIMIT 1", $domain ) );
+	} else {
+		$site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s and path = %s", $domain, $path ) );
+	}
 
-	// 2. Pull the network from cache, if possible.
-	} elseif ( ! $current_site = wp_cache_get( 'current_site', 'site-options' ) ) {
-
-		// 3. See if they have only one network.
-		$networks = $wpdb->get_col( "SELECT id FROM $wpdb->site LIMIT 2" );
-
-		if ( count( $networks ) <= 1 ) {
-			$current_site = wp_get_network( $networks[0]->id );
-
-			$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_set( 'current_site', 'site-options' );
-
-		// 4. Multiple networks are in play. Determine which via domain and path.
-		} else {
-			// Find the first path segment.
-			$path = substr( $_SERVER['REQUEST_URI'], 0, 1 + strpos( $_SERVER['REQUEST_URI'], '/', 1 ) );
-			$current_site = get_network_by_path( $domain, $path );
-
-			// Option 1. We did not find anything.
-			if ( ! $current_site ) {
-				wp_load_translations_early();
-				wp_die( __( 'No site defined on this host. If you are the owner of this site, please check <a href="http://codex.wordpress.org/Debugging_a_WordPress_Network">Debugging a WordPress Network</a> for help.' ) );
-			}
-		}
+	if ( $site ) {
+		// @todo get_blog_details()
+		return $site;
 	}
 
-	// Option 2. We found something. Load up site meta and return.
-	wp_load_core_site_options();
-	$current_site = get_current_site_name( $current_site );
-	return $current_site;
+	return false;
 }
 
 /**
Index: src/wp-includes/ms-settings.php
===================================================================
--- src/wp-includes/ms-settings.php	(revision 27178)
+++ src/wp-includes/ms-settings.php	(working copy)
@@ -22,109 +22,130 @@
 
 if ( !isset( $current_site ) || !isset( $current_blog ) ) {
 
-	$domain = addslashes( $_SERVER['HTTP_HOST'] );
-	if ( false !== strpos( $domain, ':' ) ) {
-		if ( substr( $domain, -3 ) == ':80' ) {
-			$domain = substr( $domain, 0, -3 );
-			$_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -3 );
-		} elseif ( substr( $domain, -4 ) == ':443' ) {
-			$domain = substr( $domain, 0, -4 );
-			$_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -4 );
+	// 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'] ) );
+	$path = stripslashes( $_SERVER['REQUEST_URI'] );
+	if ( is_admin() ) {
+		$path = preg_replace( '#(.*)/wp-admin/.*#', '$1', $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;
+		}
+
+		if ( '/' !== $current_site->path && $current_site->domain === $domain && 0 === strpos( $path, $current_site->path ) ) {
+			// If the current network has a path and also matches the domain and path of the request,
+			// we need chop off the network's path when looking for a site.
+			$current_blog = get_site_by_path( $domain, array( $path, substr( $path, strlen( $current_site->path ) - 1 ) ) );
 		} else {
-			wp_load_translations_early();
-			wp_die( __( 'Multisite only works without the port number in the URL.' ) );
+			// Otherwise, use the first path segment (as usual).
+			$current_blog = get_site_by_path( $domain, substr( $path, 0, 1 + strpos( $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 determing
+		 * 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 ( $wpdb->num_rows === 1 ) {
+				$current_site = wp_get_network( $one_network );
+				wp_cache_set( 'current_network', 'site-options' );
+			}
+		}
+		if ( empty( $current_site ) ) {
+			$current_site = get_network_by_path( $domain, substr( $path, 0, 1 + strpos( $path, '/', 1 ) ) );
+		}
+		// Search the network path + one more path segment (and also the network path).
+		$current_blog = get_site_by_path( $domain, array( $path, substr( $path, strlen( $current_site->path ) - 1 ) ) );
+	} else {
+		// Find the site by the domain and at most the first path segment.
+		$current_blog = get_site_by_path( $domain, substr( $path, 0, 1 + strpos( $path, '/', 1 ) ) );
+		if ( $current_blog ) {
+			$current_site = wp_get_network( $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 what the hell:
+			$current_site = get_network_by_path( $domain, substr( $path, 0, 1 + strpos( $path, '/', 1 ) ) );
+		}
 	}
 
-	$domain = rtrim( $domain, '.' );
+	// If we don't have a network by now, we have a problem.
+	if ( empty( $current_site ) ) {
+		ms_not_installed();
+	}
 
-	$path = preg_replace( '|([a-z0-9-]+.php.*)|', '', $_SERVER['REQUEST_URI'] );
-	$path = str_replace ( '/wp-admin/', '/', $path );
-	$path = preg_replace( '|(/[a-z0-9-]+?/).*|', '$1', $path );
-
-	$current_site = wpmu_current_site();
+	// @todo What if the domain of the network doesn't match the current site?
 	$current_site->cookie_domain = $current_site->domain;
 	if ( 'www.' === substr( $current_site->cookie_domain, 0, 4 ) ) {
 		$current_site->cookie_domain = substr( $current_site->cookie_domain, 4 );
 	}
 
-	if ( ! isset( $current_site->blog_id ) )
-		$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 ) );
-
-	if ( is_subdomain_install() ) {
-		$current_blog = wp_cache_get( 'current_blog_' . $domain, 'site-options' );
-		if ( !$current_blog ) {
-			$current_blog = get_blog_details( array( 'domain' => $domain ), false );
-			if ( $current_blog )
-				wp_cache_set( 'current_blog_' . $domain, $current_blog, 'site-options' );
+	// Figure out the current network's main site.
+	if ( ! isset( $current_site->blog_id ) ) {
+		if ( $current_blog && $current_blog->domain === $current_site->domain && $current_blog->path === $current_site->path ) {
+			$current_site->blog_id = $current_blog->blog_id;
+		} else {
+			// @todo we should be able to cache the blog ID of a network's main site easily.
+			$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 ) );
 		}
-		if ( $current_blog && $current_blog->site_id != $current_site->id ) {
-			$current_site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE id = %d", $current_blog->site_id ) );
-			if ( ! isset( $current_site->blog_id ) )
-				$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 ) );
-		} else
-			$blogname = substr( $domain, 0, strpos( $domain, '.' ) );
-	} else {
-		$blogname = htmlspecialchars( substr( $_SERVER[ 'REQUEST_URI' ], strlen( $path ) ) );
-		if ( false !== strpos( $blogname, '/' ) )
-			$blogname = substr( $blogname, 0, strpos( $blogname, '/' ) );
-		if ( false !== strpos( $blogname, '?' ) )
-			$blogname = substr( $blogname, 0, strpos( $blogname, '?' ) );
-		$reserved_blognames = array( 'page', 'comments', 'blog', 'wp-admin', 'wp-includes', 'wp-content', 'files', 'feed' );
-		if ( $blogname != '' && ! in_array( $blogname, $reserved_blognames ) && ! is_file( $blogname ) )
-			$path .= $blogname . '/';
-		$current_blog = wp_cache_get( 'current_blog_' . $domain . $path, 'site-options' );
-		if ( ! $current_blog ) {
-			$current_blog = get_blog_details( array( 'domain' => $domain, 'path' => $path ), false );
-			if ( $current_blog )
-				wp_cache_set( 'current_blog_' . $domain . $path, $current_blog, 'site-options' );
-		}
-		unset($reserved_blognames);
 	}
 
-	if ( ! defined( 'WP_INSTALLING' ) && is_subdomain_install() && ! is_object( $current_blog ) ) {
-		if ( defined( 'NOBLOGREDIRECT' ) ) {
-			$destination = NOBLOGREDIRECT;
-			if ( '%siteurl%' == $destination )
-				$destination = "http://" . $current_site->domain . $current_site->path;
+	// If we haven't figured out our site, the hell, man.
+	if ( empty( $current_blog ) ) {
+		if ( defined( 'WP_INSTALLING' ) ) {
+			$current_blog->blog_id = $blog_id = 1;
+
+		} elseif ( is_subdomain_install() ) {
+			// @todo This is only for an open registration subdomain network.
+			if ( defined( 'NOBLOGREDIRECT' ) ) {
+				if ( '%siteurl%' === NOBLOGREDIRECT ) {
+					$destination = "http://" . $current_site->domain . $current_site->path;
+				} else {
+					$destination = NOBLOGREDIRECT;
+				}
+			} else {
+				$destination = 'http://' . $current_site->domain . $current_site->path . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
+			}
+			header( 'Location: ' . $destination );
+			exit;
+
 		} else {
-			$destination = 'http://' . $current_site->domain . $current_site->path . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
-		}
-		header( 'Location: ' . $destination );
-		die();
-	}
-
-	if ( ! defined( 'WP_INSTALLING' ) ) {
-		if ( $current_site && ! $current_blog ) {
-			if ( $current_site->domain != $_SERVER[ 'HTTP_HOST' ] ) {
+			if ( 0 !== strcasecmp( $current_site->domain, $domain ) ) {
 				header( 'Location: http://' . $current_site->domain . $current_site->path );
 				exit;
 			}
-			$current_blog = get_blog_details( array( 'domain' => $current_site->domain, 'path' => $current_site->path ), false );
+			ms_not_installed();
 		}
-		if ( ! $current_blog || ! $current_site )
-			ms_not_installed();
 	}
 
 	$blog_id = $current_blog->blog_id;
 	$public  = $current_blog->public;
 
-	if ( empty( $current_blog->site_id ) )
+	if ( empty( $current_blog->site_id ) ) {
+		// This dates to [MU134] and shouldn't be relevant anymore,
+		// but it could be possible for arguments passed to insert_blog() etc.
 		$current_blog->site_id = 1;
+	}
+
 	$site_id = $current_blog->site_id;
-
+	wp_load_core_site_options();
 	$current_site = get_current_site_name( $current_site );
+}
 
-	if ( ! $blog_id ) {
-		if ( defined( 'WP_INSTALLING' ) ) {
-			$current_blog->blog_id = $blog_id = 1;
-		} else {
-			wp_load_translations_early();
-			$msg = ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) ? ' ' . __( 'Database tables are missing.' ) : '';
-			wp_die( __( 'No site by that name on this system.' ) . $msg );
-		}
-	}
-}
 $wpdb->set_prefix( $table_prefix, false ); // $table_prefix can be set in sunrise.php
 $wpdb->set_blog_id( $current_blog->blog_id, $current_blog->site_id );
 $table_prefix = $wpdb->get_blog_prefix();
