Index: wp-includes/ms-default-constants.php
===================================================================
--- wp-includes/ms-default-constants.php	(revision 13572)
+++ wp-includes/ms-default-constants.php	(working copy)
@@ -18,13 +18,16 @@
 	if ( !defined( 'UPLOADBLOGSDIR' ) )
 		define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );
 
+	$bloginfo = get_blog_details( $wpdb->blogid, false );
+	$file_path = rtrim($bloginfo->domain . $bloginfo->path, '/');
+	
 	/** @since 3.0.0 */
 	if ( !defined( 'UPLOADS' ) )
-		define( 'UPLOADS', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
+		define( 'UPLOADS', UPLOADBLOGSDIR . "/$file_path/files/" );
 
 	/** @since 3.0.0 */
 	if ( !defined( 'BLOGUPLOADDIR' ) )
-		define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );
+		define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/$file_path/files/" );
 }
 
 /**
Index: wp-includes/ms-functions.php
===================================================================
--- wp-includes/ms-functions.php	(revision 13572)
+++ wp-includes/ms-functions.php	(working copy)
@@ -926,7 +926,9 @@
 	$wpdb->suppress_errors(false);
 
 	$url = get_blogaddress_by_id($blog_id);
-
+	$bloginfo = get_blog_details( $blog_id, false );
+	$file_path = rtrim($bloginfo->domain . $bloginfo->path, '/');
+	
 	// Set everything up
 	make_db_current_silent();
 	populate_options();
@@ -937,7 +939,7 @@
 	update_option('siteurl', $url);
 	update_option('home', $url);
 	update_option('fileupload_url', $url . "files" );
-	update_option('upload_path', "wp-content/blogs.dir/" . $blog_id . "/files");
+	update_option('upload_path', "wp-content/blogs.dir/" . $file_path . "/files");
 	update_option('blogname', stripslashes( $blog_title ) );
 	update_option('admin_email', '');
 	$wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') );
Index: wp-admin/includes/htaccess.ms
===================================================================
--- wp-admin/includes/htaccess.ms	(revision 13572)
+++ wp-admin/includes/htaccess.ms	(working copy)
@@ -2,9 +2,8 @@
 RewriteBase BASE/
 
 #uploaded files
-RewriteRule ^(.*/)?files/$ index.php [L]
-RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
-RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]
+RewriteCond %{REQUEST_URI} !\bwp-content/
+RewriteRule (^|/)files/ wp-content/blogs.dir/%{HTTP_HOST}%{REQUEST_URI} [L]
 
 # add a trailing slash to /wp-admin
 RewriteCond %{REQUEST_URI} ^.*/wp-admin$
Index: wp-admin/includes/ms.php
===================================================================
--- wp-admin/includes/ms.php	(revision 13572)
+++ wp-admin/includes/ms.php	(working copy)
@@ -76,7 +76,11 @@
 			$wpdb->query( "DROP TABLE IF EXISTS ". current( $drop_table ) ."" );
 		}
 		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->blogs WHERE blog_id = %d", $blog_id) );
-		$dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id );
+		
+		$bloginfo = get_blog_details( $blog_id, false );
+		$file_path = rtrim($bloginfo->domain . $bloginfo->path, '/');
+		
+		$dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/$file_path/files/", $blog_id );
 		$dir = rtrim($dir, DIRECTORY_SEPARATOR);
 		$top_dir = $dir;
 		$stack = array($dir);
