Make WordPress Core

Ticket #19796: 19796.2.diff

File 19796.2.diff, 24.5 KB (added by markjaquith, 12 years ago)

My attempt at merging, which probably failed horribly.

  • wp-admin/network.php

    function network_domain_check() { 
    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;
    include( ABSPATH . 'wp-admin/admin-header.php' ); 
    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>';
    function network_step1( $errors = false ) { 
    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 ) )
    function network_step2( $errors = false ) { 
    344340                }
    345341        }
    346342
     343        $subdir_match       = $subdomain_install ? '' : '(?:[_0-9a-zA-Z-]+/)?';
     344        $subdir_replacement = $subdomain_install ? '' : '$1';
     345
    347346        if ( $_POST || ! is_multisite() ) {
    348347?>
    349348                <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
    function network_step2( $errors = false ) { 
    364363                                <textarea class="code" readonly="readonly" cols="100" rows="7">
    365364define('MULTISITE', true);
    366365define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
    367 $base = '<?php echo $base; ?>';
    368366define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
    369367define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
    370368define('SITE_ID_CURRENT_SITE', 1);
    371 define('BLOG_ID_CURRENT_SITE', 1);</textarea>
     369define('BLOG_ID_CURRENT_SITE', 1);
     370<?php if ( $wp_siteurl_subdir ): ?>
     371define('WP_SITEURL_SUBDIR', '<?php echo $wp_siteurl_subdir; ?>');
     372<?php endif; // $wp_siteurl_subdir ?>
     373</textarea>
    372374<?php
    373375        $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
    374376        foreach ( $keys_salts as $c => $v ) {
    375377                if ( defined( $c ) )
    376378                        unset( $keys_salts[ $c ] );
    377379        }
     380
    378381        if ( ! empty( $keys_salts ) ) {
    379382                $keys_salts_str = '';
    380383                $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
    define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
    399402</li>
    400403<?php
    401404        if ( iis7_supports_permalinks() ) :
     405                // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
     406                $iis_subdir_match = ltrim( $base, '/' ) . $subdir_match;
     407                $iis_rewrite_base = ltrim( $base, '/' ) . $rewrite_base;
     408                $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
    402409
    403                         if ( $subdomain_install ) {
    404                                 $web_config_file =
    405 '<?xml version="1.0" encoding="UTF-8"?>
     410                $web_config_file = <<<EOF
     411<?xml version="1.0" encoding="UTF-8"?>
    406412<configuration>
    407413    <system.webServer>
    408414        <rewrite>
    define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
    414420                                if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
    415421                                        $web_config_file .= '
    416422                <rule name="WordPress Rule for Files" stopProcessing="true">
    417                     <match url="^files/(.+)" ignoreCase="false" />
    418                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
     423                    <match url="^{$iis_subdir_match}files/(.+)" ignoreCase="false" />
     424                    <action type="Rewrite" url="{$iis_rewrite_base}wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
    419425                </rule>';
    420426                }
    421427                $web_config_file .= '
    422428                <rule name="WordPress Rule 2" stopProcessing="true">
    423                     <match url="^" ignoreCase="false" />
    424                     <conditions logicalGrouping="MatchAny">
    425                         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
    426                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
    427                     </conditions>
    428                     <action type="None" />
    429                 </rule>
    430                 <rule name="WordPress Rule 3" stopProcessing="true">
    431                     <match url="." ignoreCase="false" />
    432                     <action type="Rewrite" url="index.php" />
    433                 </rule>
    434             </rules>
    435         </rewrite>
    436     </system.webServer>
    437 </configuration>';
    438                         } else {
    439                                 $web_config_file =
    440 '<?xml version="1.0" encoding="UTF-8"?>
    441 <configuration>
    442     <system.webServer>
    443         <rewrite>
    444             <rules>
    445                 <rule name="WordPress Rule 1" stopProcessing="true">
    446                     <match url="^index\.php$" ignoreCase="false" />
    447                     <action type="None" />
    448                 </rule>';
    449                                 if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
    450                                         $web_config_file .= '
    451                 <rule name="WordPress Rule for Files" stopProcessing="true">
    452                     <match url="^files/(.+)" ignoreCase="false" />
    453                     <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
    454                 </rule>';
    455                 }
    456                 $web_config_file .= '
    457                 <rule name="WordPress Rule 2" stopProcessing="true">
    458                     <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
    459                     <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
     429                    <match url="^{$iis_subdir_match}wp-admin$" ignoreCase="false" />
     430                    <action type="Redirect" url="{$iis_subdir_replacement}wp-admin/" redirectType="Permanent" />
    460431                </rule>
    461432                <rule name="WordPress Rule 3" stopProcessing="true">
    462433                    <match url="^" ignoreCase="false" />
    define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
    467438                    <action type="None" />
    468439                </rule>
    469440                <rule name="WordPress Rule 4" stopProcessing="true">
    470                     <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" />
    471                     <action type="Rewrite" url="{R:1}" />
     441                    <match url="^{$iis_subdir_match}(wp-(content|admin|includes).*)" ignoreCase="false" />
     442                    <action type="Rewrite" url="{$iis_rewrite_base}{R:1}" />
    472443                </rule>
    473444                <rule name="WordPress Rule 5" stopProcessing="true">
    474                     <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
    475                     <action type="Rewrite" url="{R:2}" />
     445                    <match url="^{$iis_subdir_match}([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
     446                    <action type="Rewrite" url="{$iis_rewrite_base}{R:2}" />
    476447                </rule>
    477448                <rule name="WordPress Rule 6" stopProcessing="true">
    478449                    <match url="." ignoreCase="false" />
    define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
    481452            </rules>
    482453        </rewrite>
    483454    </system.webServer>
    484 </configuration>';
    485                         }
     455</configuration>
     456EOF;
     457
    486458        ?>
    487                 <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
     459                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), trailingslashit( str_replace( trailingslashit( $wp_siteurl_subdir ), '', ABSPATH ) ) ); ?></p>
    488460                <?php
    489461                if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
    490462                        echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
    define('BLOG_ID_CURRENT_SITE', 1);</textarea> 
    495467
    496468        <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead:
    497469
    498                 $htaccess_file = 'RewriteEngine On
    499 RewriteBase ' . $base . '
    500 RewriteRule ^index\.php$ - [L]' . "\n";
    501 
     470                $ms_files_rewriting = '';
    502471                if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
    503                         $htaccess_file .= "\n# uploaded files\nRewriteRule ^";
    504                         $htaccess_file .= ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n";
     472                        $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
     473                        $ms_files_rewriting .= $subdir_match . 'files/(.+) wp-includes/ms-files.php?file=$1 [L]' . "\n";
    505474                }
    506475
    507                 if ( ! $subdomain_install )
    508                         $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n";
     476                $htaccess_file = <<<EOF
     477RewriteEngine On
     478RewriteBase {$base}
     479RewriteRule ^index\.php$ - [L]
     480{$ms_files_rewriting}
     481# add a trailing slash to /wp-admin
     482RewriteRule ^{$subdir_match}wp-admin$ {$subdir_replacement}wp-admin/ [R=301,L]
    509483
    510                 $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR]
     484RewriteCond %{REQUEST_FILENAME} -f [OR]
    511485RewriteCond %{REQUEST_FILENAME} -d
    512 RewriteRule ^ - [L]';
    513 
    514                 // @todo custom content dir.
    515                 if ( ! $subdomain_install )
    516                         $htaccess_file .= "\nRewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]\nRewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]";
    517 
    518                 $htaccess_file .= "\nRewriteRule . index.php [L]";
     486RewriteRule ^ - [L]
     487RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}$1 [L]
     488RewriteRule ^{$subdir_match}(.*\.php)$ {$rewrite_base}$1 [L]
     489RewriteRule . index.php [L]
     490EOF;
    519491
    520492                ?>
    521493                <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
    RewriteRule ^ - [L]'; 
    537509
    538510if ( $_POST ) {
    539511
    540         $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
    541 
    542512        check_admin_referer( 'install-network-1' );
    543513
    544514        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    545515        // create network tables
    546516        install_network();
    547         $hostname = get_clean_basedomain();
     517        $base              = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH );
    548518        $subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false;
    549519        if ( ! network_domain_check() ) {
    550520                $result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install );
  • wp-admin/network/site-new.php

    if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) { 
    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-includes/canonical.php

    function wp_redirect_admin_locations() { 
    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/formatting.php

    function untrailingslashit($string) { 
    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( $part ) ) {
     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-includes/functions.php

    function get_temp_dir() { 
    14331433 */
    14341434function wp_upload_dir( $time = null ) {
    14351435        $siteurl = get_option( 'siteurl' );
     1436        $homeurl = get_option( 'home' );
     1437        $baseurl = is_multisite() && defined( 'MULTISITE' ) ? $homeurl : $siteurl;
    14361438        $upload_path = trim( get_option( 'upload_path' ) );
    1437 
    1438         if ( empty( $upload_path ) || 'wp-content/uploads' == $upload_path ) {
     1439        $upload_path = trim($upload_path);
     1440        $main_override = is_multisite() && defined( 'MULTISITE' ) && is_main_site();
     1441        if ( empty($upload_path) || 'wp-content/uploads' == $upload_path ) {
    14391442                $dir = WP_CONTENT_DIR . '/uploads';
    14401443        } elseif ( 0 !== strpos( $upload_path, ABSPATH ) ) {
    14411444                // $dir is absolute, $upload_path is (maybe) relative to ABSPATH
    function wp_upload_dir( $time = null ) { 
    14481451                if ( empty($upload_path) || ( 'wp-content/uploads' == $upload_path ) || ( $upload_path == $dir ) )
    14491452                        $url = WP_CONTENT_URL . '/uploads';
    14501453                else
    1451                         $url = trailingslashit( $siteurl ) . $upload_path;
     1454                        $url = trailingslashit( $baseurl ) . $upload_path;
    14521455        }
    14531456
    14541457        if ( defined( 'UPLOADS' ) ) {
    14551458                $dir = ABSPATH . UPLOADS;
    1456                 $url = trailingslashit( $siteurl ) . UPLOADS;
     1459                $url = trailingslashit( $baseurl ) . UPLOADS;
    14571460        }
    14581461
    14591462        // Multisite (if not the main site in a post-MU network)
  • wp-includes/link-template.php

    function site_url( $path = '', $scheme = null ) { 
    19471947 * @return string Site url link with optional path appended.
    19481948*/
    19491949function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
    1950         if ( empty( $blog_id ) || !is_multisite() ) {
    1951                 $url = get_option( 'siteurl' );
     1950        if ( empty( $blog_id ) ) {
     1951                if ( is_multisite() )
     1952                        $url = get_option( 'home' );
     1953                else
     1954                        $url = get_option( 'siteurl' );
    19521955        } else {
    19531956                switch_to_blog( $blog_id );
    1954                 $url = get_option( 'siteurl' );
     1957                $url = get_option( 'home' );
    19551958                restore_current_blog();
    19561959        }
    19571960
    function plugins_url($path = '', $plugin = '') { 
    20572060        else
    20582061                $url = WP_PLUGIN_URL;
    20592062
    2060        
     2063
    20612064        $url = set_url_scheme( $url );
    20622065
    20632066        if ( !empty($plugin) && is_string($plugin) ) {
  • wp-includes/ms-functions.php

    function wpmu_validate_blog_signup($blogname, $blog_title, $user = '') { 
    586586                $mydomain = $blogname . '.' . preg_replace( '|^www\.|', '', $domain );
    587587                $path = $base;
    588588        } else {
    589                 $mydomain = "$domain";
    590                 $path = $base.$blogname.'/';
     589                $mydomain = $domain;
     590                $path = '/' . join_with_slashes( $base, $blogname ) . '/';
    591591        }
    592592        if ( domain_exists($mydomain, $path) )
    593593                $errors->add('blogname', __('Sorry, that site already exists!'));
    function install_blog($blog_id, $blog_title = '') { 
    11301130        if ( $wpdb->get_results("SELECT ID FROM $wpdb->posts") )
    11311131                die( __( '<h1>Already Installed</h1><p>You appear to have already installed WordPress. To reinstall please clear your old database tables first.</p>' ) . '</body></html>' );
    11321132
    1133         $url = get_blogaddress_by_id( $blog_id );
     1133        $homeurl = $siteurl = untrailingslashit( get_blogaddress_by_id( $blog_id ) );
    11341134
    11351135        // Set everything up
    11361136        make_db_current_silent( 'blog' );
    function install_blog($blog_id, $blog_title = '') { 
    11381138        populate_roles();
    11391139        $wp_roles->_init();
    11401140
    1141         $url = untrailingslashit( $url );
    1142 
    1143         update_option( 'siteurl', $url );
    1144         update_option( 'home', $url );
     1141        // Maybe fix url
     1142        if ( defined( 'WP_SITEURL_SUBDIR' ) && WP_SITEURL_SUBDIR )
     1143                $siteurl = join_with_slashes( $siteurl, WP_SITEURL_SUBDIR );
    11451144
     1145        update_option('siteurl', $siteurl);
     1146        update_option('home', $homeurl);
     1147        update_option('fileupload_url', join_with_slashes( $homeurl, 'files' ) );
    11461148        if ( get_site_option( 'ms_files_rewriting' ) )
    11471149                update_option( 'upload_path', UPLOADBLOGSDIR . "/$blog_id/files" );
    11481150        else
    11491151                update_option( 'upload_path', get_blog_option( $current_site->blog_id, 'upload_path' ) );
     1152        update_option('blogname', stripslashes( $blog_title ) );
     1153        update_option('admin_email', '');
     1154        $wpdb->update( $wpdb->options, array('option_value' => ''), array('option_name' => 'admin_email') );
     1155
     1156        // remove all perms
     1157        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'user_level'   ) );
     1158        $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => $table_prefix . 'capabilities' ) );
    11501159
    11511160        update_option( 'blogname', stripslashes( $blog_title ) );
    11521161        update_option( 'admin_email', '' );
    function force_ssl_content( $force = '' ) { 
    18741883
    18751884/**
    18761885 * Formats a URL to use https.
    1877  * 
     1886 *
    18781887 * Useful as a filter.
    18791888 *
    18801889 * @since 2.8.5
  • wp-includes/ms-load.php

    function wpmu_current_site() { 
    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

    if ( !isset( $current_site ) || !isset( $current_blog ) ) { 
    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/rewrite.php

    class WP_Rewrite { 
    17291729                <rewrite>
    17301730                        <rules>';
    17311731                }
    1732                 if ( !is_multisite() ) {
    1733                         $rules .= '
    1734                                 <rule name="wordpress" patternSyntax="Wildcard">
    1735                                         <match url="*" />
    1736                                                 <conditions>
    1737                                                         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    1738                                                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    1739                                                 </conditions>
    1740                                         <action type="Rewrite" url="index.php" />
    1741                                 </rule>';
    1742                 } else {
    1743                         if (is_subdomain_install()) {
    1744                                 $rules .= '
    1745                                 <rule name="WordPress Rule 1" stopProcessing="true">
    1746                                         <match url="^index\.php$" ignoreCase="false" />
    1747                                         <action type="None" />
    1748                                 </rule>';
    1749                                 if ( get_site_option( 'ms_files_rewriting' ) ) {
    1750                                         $rules .= '
    1751                                 <rule name="WordPress Rule for Files" stopProcessing="true">
    1752                                         <match url="^files/(.+)" ignoreCase="false" />
    1753                                         <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
    1754                                 </rule>';
    1755                                 }
    1756                                 $rules .= '
    1757                                 <rule name="WordPress Rule 2" stopProcessing="true">
    1758                                         <match url="^" ignoreCase="false" />
    1759                                         <conditions logicalGrouping="MatchAny">
    1760                                                 <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
    1761                                                 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
    1762                                         </conditions>
    1763                                         <action type="None" />
    1764                                 </rule>
    1765                                 <rule name="WordPress Rule 3" stopProcessing="true">
    1766                                         <match url="." ignoreCase="false" />
    1767                                         <action type="Rewrite" url="index.php" />
    1768                                 </rule>';
    1769                         } else {
    1770                                 $rules .= '
    1771                                 <rule name="WordPress Rule 1" stopProcessing="true">
    1772                                         <match url="^index\.php$" ignoreCase="false" />
    1773                                         <action type="None" />
    1774                                 </rule>';
    1775                                 if ( get_site_option( 'ms_files_rewriting' ) ) {
    1776                                         $rules .= '
    1777                                 <rule name="WordPress Rule for Files" stopProcessing="true">
    1778                                         <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
    1779                                         <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
    1780                                 </rule>';
    1781                                 }
    1782                                 $rules .= '
    1783                                 <rule name="WordPress Rule 2" stopProcessing="true">
    1784                                         <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
    1785                                         <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
    1786                                 </rule>
    1787                                 <rule name="WordPress Rule 3" stopProcessing="true">
    1788                                         <match url="^" ignoreCase="false" />
    1789                                         <conditions logicalGrouping="MatchAny">
    1790                                                 <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
    1791                                                 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
     1732
     1733                $rules .= '
     1734                        <rule name="wordpress" patternSyntax="Wildcard">
     1735                                <match url="*" />
     1736                                        <conditions>
     1737                                                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     1738                                                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    17921739                                        </conditions>
    1793                                         <action type="None" />
    1794                                 </rule>
    1795                                 <rule name="WordPress Rule 4" stopProcessing="true">
    1796                                         <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
    1797                                         <action type="Rewrite" url="{R:1}" />
    1798                                 </rule>
    1799                                 <rule name="WordPress Rule 5" stopProcessing="true">
    1800                                         <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
    1801                                         <action type="Rewrite" url="{R:2}" />
    1802                                 </rule>
    1803                                 <rule name="WordPress Rule 6" stopProcessing="true">
    1804                                         <match url="." ignoreCase="false" />
    1805                                         <action type="Rewrite" url="index.php" />
    1806                                 </rule>';
    1807                         }
    1808                 }
     1740                                <action type="Rewrite" url="index.php" />
     1741                        </rule>';
     1742
    18091743                if ( $add_parent_tags ) {
    18101744                        $rules .= '
    18111745                        </rules>