WordPress.org

Make WordPress Core

Ticket #19796: 19796-hack-day.11.diff

File 19796-hack-day.11.diff, 23.3 KB (added by evansolomon, 21 months ago)
  • wp-admin/network.php

     
    5151 * @return bool Whether subdomain install is allowed 
    5252 */ 
    5353function allow_subdomain_install() { 
    54         $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'siteurl' ) ); 
    55         if( false !== strpos( $domain, '/' ) || 'localhost' == $domain || preg_match( '|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|', $domain ) ) 
     54        $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) ); 
     55        if( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) ) 
    5656                return false; 
    5757 
    5858        return true; 
     
    144144function network_step1( $errors = false ) { 
    145145        global $is_apache; 
    146146 
    147         if ( get_option( 'siteurl' ) != get_option( 'home' ) ) { 
    148                 echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . sprintf( __( 'Your <strong>WordPress address</strong> must match your <strong>Site address</strong> before creating a Network. See <a href="%s">General Settings</a>.' ), esc_url( admin_url( 'options-general.php' ) ) ) . '</p></div>'; 
    149                 echo '</div>'; 
    150                 include ( ABSPATH . 'wp-admin/admin-footer.php' ); 
    151                 die(); 
    152         } 
    153  
    154147        if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { 
    155148                echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>'; 
    156149                echo '</div>'; 
     
    314307 * @since 3.0.0 
    315308 */ 
    316309function network_step2( $errors = false ) { 
    317         global $base, $wpdb; 
    318         $hostname = get_clean_basedomain(); 
     310        global $wpdb; 
    319311 
    320         if ( ! isset( $base ) ) 
    321                 $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) ); 
     312        $hostname          = get_clean_basedomain(); 
     313        $slashed_home      = trailingslashit( get_option( 'home'    ) ); 
     314        $slashed_siteurl   = trailingslashit( get_option( 'siteurl' ) ); 
     315        $wp_siteurl_subdir = '/' . str_replace( $slashed_home, '', $slashed_siteurl ); 
     316        $rewrite_base      = ! empty( $wp_siteurl_subdir ) ? ltrim( trailingslashit( $wp_siteurl_subdir ), '/' ) : ''; 
     317        $base              = parse_url( $slashed_home, PHP_URL_PATH ); 
    322318 
    323319        // Wildcard DNS message. 
    324320        if ( is_wp_error( $errors ) ) 
    325321                echo '<div class="error">' . $errors->get_error_message() . '</div>'; 
    326322 
    327         if ( $_POST ) { 
    328                 if ( allow_subdomain_install() ) 
     323        if ( ! empty( $_POST ) ) { 
     324                if ( allow_subdomain_install() ) { 
    329325                        $subdomain_install = allow_subdirectory_install() ? ! empty( $_POST['subdomain_install'] ) : true; 
    330                 else 
     326                } else { 
    331327                        $subdomain_install = false; 
     328                } 
    332329        } else { 
    333330                if ( is_multisite() ) { 
    334331                        $subdomain_install = is_subdomain_install(); 
     
    337334<?php 
    338335                } else { 
    339336                        $subdomain_install = (bool) $wpdb->get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = 1 AND meta_key = 'subdomain_install'" ); 
     337 
     338        $subdir_match       = $subdomain_install ? '' : '(?:[_0-9a-zA-Z-]+/)?'; 
     339        $subdir_replacement = $subdomain_install ? '' : '$1'; 
     340 
    340341?> 
    341342        <div class="error"><p><strong><?php _e('Warning:'); ?></strong> <?php _e( 'An existing WordPress network was detected.' ); ?></p></div> 
    342343        <p><?php _e( 'Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.' ); ?></p> 
     
    344345                } 
    345346        } 
    346347 
    347         if ( $_POST || ! is_multisite() ) { 
     348        if ( ! empty( $_POST ) || ! is_multisite() ) { 
    348349?> 
    349350                <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3> 
    350351                <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p> 
     
    369370                                <textarea class="code" readonly="readonly" cols="100" rows="7"> 
    370371define('MULTISITE', true); 
    371372define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>); 
    372 $base = '<?php echo $base; ?>'; 
    373373define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>'); 
    374374define('PATH_CURRENT_SITE', '<?php echo $base; ?>'); 
    375375define('SITE_ID_CURRENT_SITE', 1); 
    376 define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
     376define('BLOG_ID_CURRENT_SITE', 1); 
     377<?php if ( $wp_siteurl_subdir ): ?> 
     378define('WP_SITEURL_SUBDIR', '<?php echo $wp_siteurl_subdir; ?>'); 
     379<?php endif; // $wp_siteurl_subdir ?> 
     380</textarea> 
    377381<?php 
    378382        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' ); 
    379383        foreach ( $keys_salts as $c => $v ) { 
    380                 if ( defined( $c ) ) 
     384                if ( defined( $c ) ) { 
    381385                        unset( $keys_salts[ $c ] ); 
     386                } 
    382387        } 
     388 
    383389        if ( ! empty( $keys_salts ) ) { 
    384390                $keys_salts_str = ''; 
    385                 $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
     391                $from_api       = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); 
    386392                if ( is_wp_error( $from_api ) ) { 
    387393                        foreach ( $keys_salts as $c => $v ) { 
    388394                                $keys_salts_str .= "\ndefine( '$c', '" . wp_generate_password( 64, true, true ) . "' );"; 
     
    404410</li> 
    405411<?php 
    406412        if ( iis7_supports_permalinks() ) : 
     413                // IIS doesn't support RewriteBase, all your RewriteBase are belong to us 
     414                $iis_subdir_match = ltrim( $base, '/' ) . $subdir_match; 
     415                $iis_rewrite_base = ltrim( $base, '/' ) . $rewrite_base; 
     416                $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}'; 
    407417 
    408                         if ( $subdomain_install ) { 
    409                                 $web_config_file = 
    410 '<?xml version="1.0" encoding="UTF-8"?> 
     418                $web_config_file = <<<EOF 
     419<?xml version="1.0" encoding="UTF-8"?> 
    411420<configuration> 
    412421    <system.webServer> 
    413422        <rewrite> 
     
    417426                    <action type="None" /> 
    418427                </rule> 
    419428                <rule name="WordPress Rule 2" stopProcessing="true"> 
    420                     <match url="^files/(.+)" ignoreCase="false" /> 
    421                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" /> 
     429                    <match url="^{$iis_subdir_match}files/(.+)" ignoreCase="false" /> 
     430                    <action type="Rewrite" url="{$iis_rewrite_base}wp-includes/ms-files.php?file={R:1}" appendQueryString="false" /> 
    422431                </rule> 
    423432                <rule name="WordPress Rule 3" stopProcessing="true"> 
    424                     <match url="^" ignoreCase="false" /> 
    425                     <conditions logicalGrouping="MatchAny"> 
    426                         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
    427                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
    428                     </conditions> 
    429                     <action type="None" /> 
     433                    <match url="^{$iis_subdir_match}wp-admin$" ignoreCase="false" /> 
     434                    <action type="Redirect" url="{$iis_subdir_replacement}wp-admin/" redirectType="Permanent" /> 
    430435                </rule> 
    431436                <rule name="WordPress Rule 4" stopProcessing="true"> 
    432                     <match url="." ignoreCase="false" /> 
    433                     <action type="Rewrite" url="index.php" /> 
    434                 </rule> 
    435             </rules> 
    436         </rewrite> 
    437     </system.webServer> 
    438 </configuration>'; 
    439                         } else { 
    440                                 $web_config_file = 
    441 '<?xml version="1.0" encoding="UTF-8"?> 
    442 <configuration> 
    443     <system.webServer> 
    444         <rewrite> 
    445             <rules> 
    446                 <rule name="WordPress Rule 1" stopProcessing="true"> 
    447                     <match url="^index\.php$" ignoreCase="false" /> 
    448                     <action type="None" /> 
    449                 </rule> 
    450                 <rule name="WordPress Rule 2" stopProcessing="true"> 
    451                     <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" /> 
    452                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> 
    453                 </rule> 
    454                 <rule name="WordPress Rule 3" stopProcessing="true"> 
    455                     <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" /> 
    456                     <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" /> 
    457                 </rule> 
    458                 <rule name="WordPress Rule 4" stopProcessing="true"> 
    459437                    <match url="^" ignoreCase="false" /> 
    460438                    <conditions logicalGrouping="MatchAny"> 
    461439                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
     
    464442                    <action type="None" /> 
    465443                </rule> 
    466444                <rule name="WordPress Rule 5" stopProcessing="true"> 
    467                     <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" /> 
    468                     <action type="Rewrite" url="{R:1}" /> 
     445                    <match url="^{$iis_subdir_match}(wp-(content|admin|includes).*)" ignoreCase="false" /> 
     446                    <action type="Rewrite" url="{$iis_rewrite_base}{R:1}" /> 
    469447                </rule> 
    470448                <rule name="WordPress Rule 6" stopProcessing="true"> 
    471                     <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
    472                     <action type="Rewrite" url="{R:2}" /> 
     449                    <match url="^{$iis_subdir_match}([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
     450                    <action type="Rewrite" url="{$iis_rewrite_base}{R:2}" /> 
    473451                </rule> 
    474452                <rule name="WordPress Rule 7" stopProcessing="true"> 
    475453                    <match url="." ignoreCase="false" /> 
     
    478456            </rules> 
    479457        </rewrite> 
    480458    </system.webServer> 
    481 </configuration>'; 
    482                         } 
     459</configuration> 
     460EOF; 
     461 
    483462        ?> 
    484                 <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
     463                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), $wp_siteurl_subdir ? dirname( ABSPATH ) : ABSPATH ); ?></p> 
    485464                <textarea class="code" readonly="readonly" cols="100" rows="20"> 
    486                 <?php echo esc_textarea( $web_config_file ); ?> 
     465<?php echo esc_textarea( $web_config_file ); ?> 
    487466                </textarea></li> 
    488467                </ol> 
    489468 
    490469        <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead: 
    491  
    492                 $htaccess_file = 'RewriteEngine On 
    493 RewriteBase ' . $base . ' 
     470                $htaccess_file = <<<EOF 
     471RewriteEngine On 
     472RewriteBase {$base} 
    494473RewriteRule ^index\.php$ - [L] 
    495474 
    496475# uploaded files 
    497 RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n"; 
     476RewriteRule ^{$subdir_match}files/(.+) {$rewrite_base}wp-includes/ms-files.php?file=$1 [L] 
    498477 
    499                 if ( ! $subdomain_install ) 
    500                         $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n"; 
     478# add a trailing slash to /wp-admin 
     479RewriteRule ^{$subdir_match}wp-admin$ {$subdir_replacement}wp-admin/ [R=301,L] 
    501480 
    502                 $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR] 
     481RewriteCond %{REQUEST_FILENAME} -f [OR] 
    503482RewriteCond %{REQUEST_FILENAME} -d 
    504 RewriteRule ^ - [L]'; 
     483RewriteRule ^ - [L] 
     484RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}$1 [L] 
     485RewriteRule ^{$subdir_match}(.*\.php)$ {$rewrite_base}$1 [L] 
     486RewriteRule . index.php [L] 
     487EOF; 
    505488 
    506                 // @todo custom content dir. 
    507                 if ( ! $subdomain_install ) 
    508                         $htaccess_file .= "\nRewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]\nRewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]"; 
    509  
    510                 $htaccess_file .= "\nRewriteRule . index.php [L]"; 
    511  
    512489                ?> 
    513                 <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
    514                 <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>"> 
     490                <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), $wp_siteurl_subdir ? dirname( ABSPATH ) : ABSPATH ); ?></p> 
     491                <textarea class="code" readonly="readonly" cols="100" rows="16"> 
    515492<?php echo esc_textarea( $htaccess_file ); ?></textarea></li> 
    516493                </ol> 
    517494 
     
    523500        } 
    524501} 
    525502 
    526 if ( $_POST ) { 
     503if ( ! empty( $_POST ) ) { 
    527504 
    528         $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) ); 
    529  
    530505        check_admin_referer( 'install-network-1' ); 
    531506 
    532507        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 
     508 
    533509        // create network tables 
    534510        install_network(); 
    535         $hostname = get_clean_basedomain(); 
     511 
     512        $base              = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH ); 
    536513        $subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false; 
     514 
    537515        if ( ! network_domain_check() ) { 
    538516                $result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install ); 
    539517                if ( is_wp_error( $result ) ) { 
    540                         if ( 1 == count( $result->get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() ) 
     518                        if ( 1 == count( $result->get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() ) { 
    541519                                network_step2( $result ); 
    542                         else 
     520                        } else { 
    543521                                network_step1( $result ); 
     522                        } 
    544523                } else { 
    545524                        network_step2(); 
    546525                } 
  • wp-admin/network/site-new.php

     
    6262 
    6363        if ( is_subdomain_install() ) { 
    6464                $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); 
    65                 $path = $base; 
     65                $path      = $current_site->path; 
    6666        } else { 
    6767                $newdomain = $current_site->domain; 
    68                 $path = $base . $domain . '/'; 
     68                $path      = $current_site->path . $domain . '/'; 
    6969        } 
    7070 
    7171        $password = 'N/A'; 
  • wp-admin/includes/ms.php

     
    673673        <?php if ( in_array( get_site_option( 'registration' ), array( 'all', 'blog' ) ) ) : ?> 
    674674                <tr> 
    675675                        <th scope="row" colspan="2" class="th-full"> 
    676                                 <a href="<?php echo apply_filters( 'wp_signup_location', network_home_url( 'wp-signup.php' ) ); ?>"><?php _e( 'Create a New Site' ); ?></a> 
     676                                <a href="<?php echo apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) ); ?>"><?php _e( 'Create a New Site' ); ?></a> 
    677677                        </th> 
    678678                </tr> 
    679679        <?php endif; ?> 
  • wp-includes/ms-functions.php

     
    595595                $mydomain = $blogname . '.' . preg_replace( '|^www\.|', '', $domain ); 
    596596                $path = $base; 
    597597        } else { 
    598                 $mydomain = "$domain"; 
    599                 $path = $base.$blogname.'/'; 
     598                $mydomain = $domain; 
     599                $path = '/' . join_with_slashes( $base, $blogname ) . '/'; 
    600600        } 
    601601        if ( domain_exists($mydomain, $path) ) 
    602602                $errors->add('blogname', __('Sorry, that site already exists!')); 
     
    11421142 
    11431143        $wpdb->suppress_errors(false); 
    11441144 
    1145         $url = get_blogaddress_by_id($blog_id); 
     1145        $homeurl = $siteurl = untrailingslashit( get_blogaddress_by_id( $blog_id ) ); 
    11461146 
    11471147        // Set everything up 
    11481148        make_db_current_silent( 'blog' ); 
     
    11501150        populate_roles(); 
    11511151        $wp_roles->_init(); 
    11521152 
    1153         $url = untrailingslashit( $url ); 
    1154         // fix url. 
    1155         update_option('siteurl', $url); 
    1156         update_option('home', $url); 
    1157         update_option('fileupload_url', $url . "/files" ); 
    1158         update_option('upload_path', UPLOADBLOGSDIR . "/$blog_id/files"); 
     1153        // Maybe fix url 
     1154        if ( defined( 'WP_SITEURL_SUBDIR' ) && WP_SITEURL_SUBDIR ) 
     1155                $siteurl = join_with_slashes( $siteurl, WP_SITEURL_SUBDIR, '/' ); 
     1156 
     1157        update_option('siteurl', $siteurl); 
     1158        update_option('home', $homeurl); 
     1159        update_option('fileupload_url', join_with_slashes( $homeurl, 'files', '/' ) ); 
     1160        update_option('upload_path', join_with_slashes( UPLOADBLOGSDIR, $blog_id, 'files', '/' ) ); 
    11591161        update_option('blogname', stripslashes( $blog_title ) ); 
    11601162        update_option('admin_email', ''); 
    11611163        $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') ); 
    11621164 
    11631165        // remove all perms 
    1164         $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'user_level' ) ); 
     1166        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'user_level'   ) ); 
     1167        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'capabilities' ) ); 
    11651168 
    1166         $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix.'capabilities' ) ); 
    1167  
    11681169        $wpdb->suppress_errors( false ); 
    11691170} 
    11701171 
  • wp-includes/link-template.php

     
    19641964                        $scheme = ( is_ssl() ? 'https' : 'http' ); 
    19651965        } 
    19661966 
    1967         if ( empty( $blog_id ) || !is_multisite() ) { 
    1968                 $url = get_option( 'siteurl' ); 
     1967        if ( empty( $blog_id ) ) { 
     1968                if ( is_multisite() ) 
     1969                        $url = get_option( 'home' ); 
     1970                else 
     1971                        $url = get_option( 'siteurl' ); 
    19691972        } else { 
    19701973                switch_to_blog( $blog_id ); 
    1971                 $url = get_option( 'siteurl' ); 
     1974                $url = get_option( 'home' ); 
    19721975                restore_current_blog(); 
    19731976        } 
    19741977 
  • wp-includes/canonical.php

     
    1818 * one or the other. 
    1919 * 
    2020 * Prevents redirection for feeds, trackbacks, searches, comment popup, and 
    21  * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7,  
     21 * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7, 
    2222 * page/post previews, WP admin, Trackbacks, robots.txt, searches, or on POST 
    2323 * requests. 
    2424 * 
     
    282282 
    283283                if ( 'wp-register.php' == basename( $redirect['path'] ) ) { 
    284284                        if ( is_multisite() ) 
    285                                 $redirect_url = apply_filters( 'wp_signup_location', site_url( 'wp-signup.php' ) ); 
     285                                $redirect_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) ); 
    286286                        else 
    287287                                $redirect_url = site_url( 'wp-login.php?action=register' ); 
    288288                        wp_redirect( $redirect_url, 301 ); 
     
    517517                site_url( 'dashboard', 'relative' ), 
    518518                site_url( 'admin', 'relative' ), 
    519519        ); 
    520         if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) { 
     520        if ( parse_url( admin_url( '', 'relative' ), PHP_URL_PATH ) !== $_SERVER['REQUEST_URI'] && in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) { 
    521521                wp_redirect( admin_url() ); 
    522522                exit; 
    523523        } 
  • wp-includes/functions.php

     
    14341434function wp_upload_dir( $time = null ) { 
    14351435        global $_wp_switched; 
    14361436        $siteurl = get_option( 'siteurl' ); 
     1437        $homeurl = get_option( 'home' ); 
     1438        $baseurl = is_multisite() && defined( 'MULTISITE' ) ? $homeurl : $siteurl; 
    14371439        $upload_path = get_option( 'upload_path' ); 
    14381440        $upload_path = trim($upload_path); 
    14391441        $main_override = is_multisite() && defined( 'MULTISITE' ) && is_main_site(); 
     
    14531455                if ( empty($upload_path) || ( 'wp-content/uploads' == $upload_path ) || ( $upload_path == $dir ) ) 
    14541456                        $url = WP_CONTENT_URL . '/uploads'; 
    14551457                else 
    1456                         $url = trailingslashit( $siteurl ) . $upload_path; 
     1458                        $url = trailingslashit( $baseurl ) . $upload_path; 
    14571459        } 
    14581460 
    14591461        if ( defined('UPLOADS') && ! $main_override && ! $_wp_switched ) { 
    14601462                $dir = ABSPATH . UPLOADS; 
    1461                 $url = trailingslashit( $siteurl ) . UPLOADS; 
     1463                $url = trailingslashit( $baseurl ) . UPLOADS; 
    14621464        } 
    14631465 
    14641466        if ( is_multisite() && ! $main_override && ! $_wp_switched  ) { 
  • wp-includes/ms-load.php

     
    142142                $current_site->id = defined( 'SITE_ID_CURRENT_SITE' ) ? SITE_ID_CURRENT_SITE : 1; 
    143143                $current_site->domain = DOMAIN_CURRENT_SITE; 
    144144                $current_site->path   = $path = PATH_CURRENT_SITE; 
     145 
    145146                if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) 
    146147                        $current_site->blog_id = BLOG_ID_CURRENT_SITE; 
    147148                elseif ( defined( 'BLOGID_CURRENT_SITE' ) ) // deprecated. 
  • wp-includes/ms-settings.php

     
    8686                        if ( '%siteurl%' == $destination ) 
    8787                                $destination = "http://" . $current_site->domain . $current_site->path; 
    8888                } else { 
    89                         $destination = 'http://' . $current_site->domain . $current_site->path . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain ); 
     89                        $destination = 'http://' . $current_site->domain . $current_site->wp_siteurl_subdir . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain ); 
    9090                } 
    9191                header( 'Location: ' . $destination ); 
    9292                die(); 
  • wp-includes/formatting.php

     
    13551355} 
    13561356 
    13571357/** 
     1358 * Removes trailing and leading strings from elements (array), then combines elements 
     1359 * with a string in between each element. Leading and trailing strings should be 
     1360 * manually concatenated. 
     1361 * 
     1362 * @since  3.5.0 
     1363 * 
     1364 * @param  array $parts Items to be combined 
     1365 * @param  string $string String to be used to combine items 
     1366 * @return  string Concatenated parts with given strings in between each element. 
     1367 */ 
     1368function join_with_string( $parts, $string ) { 
     1369        $members = array(); 
     1370        foreach ( (array) $parts as $part ) { 
     1371                if ( is_array( $parts ) ) { 
     1372                        foreach ( $part as $member ) { 
     1373                                $members[] = trim( $member, $string ); 
     1374                        } 
     1375                } else { 
     1376                        $members[] = trim( $part, $string ); 
     1377                } 
     1378        } 
     1379 
     1380        return implode( $string, $members ); 
     1381} 
     1382 
     1383/** 
     1384 * Removes trailing and leading slashes from elements (array or string args), then combines elements 
     1385 * with a slash in between each element. Leading and trailing slashes should be 
     1386 * manually concatenated. 
     1387 * 
     1388 * @since  3.5.0 
     1389 * 
     1390 * @return  string Concatenated string with slashes in between each element. 
     1391 */ 
     1392function join_with_slashes() { 
     1393        $args = func_get_args(); 
     1394        return join_with_string( $args, '/' ); 
     1395} 
     1396 
     1397/** 
    13581398 * Adds slashes to escape strings. 
    13591399 * 
    13601400 * Slashes will first be removed if magic_quotes_gpc is set, see {@link 
  • wp-signup.php

     
    394394                $proto = 'https://'; 
    395395        else 
    396396                $proto = 'http://'; 
    397         $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode($proto . $_SERVER['HTTP_HOST'] . '/wp-signup.php' )); 
     397        $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode( network_site_url( 'wp-signup.php' ) ) ); 
    398398        echo sprintf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url ); 
    399399} else { 
    400400        $stage = isset( $_POST['stage'] ) ?  $_POST['stage'] : 'default'; 
  • wp-login.php

     
    509509case 'register' : 
    510510        if ( is_multisite() ) { 
    511511                // Multisite uses wp-signup.php 
    512                 wp_redirect( apply_filters( 'wp_signup_location', site_url('wp-signup.php') ) ); 
     512                wp_redirect( apply_filters( 'wp_signup_location', network_site_url('wp-signup.php') ) ); 
    513513                exit; 
    514514        } 
    515515