network_step2

The timeline below displays how wordpress function network_step2 has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = str_starts_with($abspath_fix, $document_root_fix) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        wp_admin_notice($errors->get_error_message(), array('additional_classes' => array('error')));
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        wp_admin_notice('<strong>' . __('Warning:') . '</strong> ' . __('An existing WordPress network was detected.'), array('additional_classes' => array('error')));
        ?>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<?php 
        $notice_message = '<strong>' . __('Caution:') . '</strong> ';
        $notice_args = array('type' => 'warning', 'additional_classes' => array('inline'));
        if (file_exists($home_path . '.htaccess')) {
            $notice_message .= sprintf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            $notice_message .= sprintf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            $notice_message .= sprintf(
                /* translators: %s: wp-config.php */
                __('You should back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        wp_admin_notice($notice_message, $notice_args);
    }
    ?>
	<ol>
		<li><p id="network-wpconfig-rules-description">
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-rules">
			<?php 
    printf(
        /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
        __('Network configuration rules for %s'),
        '<code>wp-config.php</code>'
    );
    ?>
		</label></p>
		<textarea id="network-wpconfig-rules" class="code" readonly="readonly" cols="100" rows="7" aria-describedby="network-wpconfig-rules-description">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p id="network-wpconfig-authentication-description">
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-authentication"><?php 
        _e('Network configuration authentication keys');
        ?></label></p>
		<textarea id="network-wpconfig-authentication" class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>" aria-describedby="network-wpconfig-authentication-description"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p id="network-webconfig-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-webconfig-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>web.config</code>'
        );
        ?>
			</label></p>
			<textarea id="network-webconfig-rules" class="code" readonly="readonly" cols="100" rows="20" aria-describedby="network-webconfig-rules-description"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/documentation/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p id="network-htaccess-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-htaccess-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>.htaccess</code>'
        );
        ?>
			</label></p>
			<textarea id="network-htaccess-rules" class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>" aria-describedby="network-htaccess-rules-description"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 6.3

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = str_starts_with($abspath_fix, $document_root_fix) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('You should back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p id="network-wpconfig-rules-description">
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-rules">
			<?php 
    printf(
        /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
        __('Network configuration rules for %s'),
        '<code>wp-config.php</code>'
    );
    ?>
		</label></p>
		<textarea id="network-wpconfig-rules" class="code" readonly="readonly" cols="100" rows="7" aria-describedby="network-wpconfig-rules-description">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p id="network-wpconfig-authentication-description">
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-authentication"><?php 
        _e('Network configuration authentication keys');
        ?></label></p>
		<textarea id="network-wpconfig-authentication" class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>" aria-describedby="network-wpconfig-authentication-description"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p id="network-webconfig-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-webconfig-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>web.config</code>'
        );
        ?>
			</label></p>
			<textarea id="network-webconfig-rules" class="code" readonly="readonly" cols="100" rows="20" aria-describedby="network-webconfig-rules-description"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/documentation/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p id="network-htaccess-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-htaccess-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>.htaccess</code>'
        );
        ?>
			</label></p>
			<textarea id="network-htaccess-rules" class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>" aria-describedby="network-htaccess-rules-description"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 6.2

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('You should back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p id="network-wpconfig-rules-description">
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-rules">
			<?php 
    printf(
        /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
        __('Network configuration rules for %s'),
        '<code>wp-config.php</code>'
    );
    ?>
		</label></p>
		<textarea id="network-wpconfig-rules" class="code" readonly="readonly" cols="100" rows="7" aria-describedby="network-wpconfig-rules-description">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p id="network-wpconfig-authentication-description">
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-authentication"><?php 
        _e('Network configuration authentication keys');
        ?></label></p>
		<textarea id="network-wpconfig-authentication" class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>" aria-describedby="network-wpconfig-authentication-description"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p id="network-webconfig-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-webconfig-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>web.config</code>'
        );
        ?>
			</label></p>
			<textarea id="network-webconfig-rules" class="code" readonly="readonly" cols="100" rows="20" aria-describedby="network-webconfig-rules-description"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/documentation/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p id="network-htaccess-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-htaccess-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>.htaccess</code>'
        );
        ?>
			</label></p>
			<textarea id="network-htaccess-rules" class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>" aria-describedby="network-htaccess-rules-description"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 6.1

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('You should back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p id="network-wpconfig-rules-description">
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-rules">
			<?php 
    printf(
        /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
        __('Network configuration rules for %s'),
        '<code>wp-config.php</code>'
    );
    ?>
		</label></p>
		<textarea id="network-wpconfig-rules" class="code" readonly="readonly" cols="100" rows="7" aria-describedby="network-wpconfig-rules-description">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p id="network-wpconfig-authentication-description">
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<p class="configuration-rules-label"><label for="network-wpconfig-authentication"><?php 
        _e('Network configuration authentication keys');
        ?></label></p>
		<textarea id="network-wpconfig-authentication" class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>" aria-describedby="network-wpconfig-authentication-description"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p id="network-webconfig-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-webconfig-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>web.config</code>'
        );
        ?>
			</label></p>
			<textarea id="network-webconfig-rules" class="code" readonly="readonly" cols="100" rows="20" aria-describedby="network-webconfig-rules-description"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p id="network-htaccess-rules-description">';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
			<p class="configuration-rules-label"><label for="network-htaccess-rules">
				<?php 
        printf(
            /* translators: %s: File name (wp-config.php, .htaccess or web.config). */
            __('Network configuration rules for %s'),
            '<code>.htaccess</code>'
        );
        ?>
			</label></p>
			<textarea id="network-htaccess-rules" class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>" aria-describedby="network-htaccess-rules-description"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.9

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('You should back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('You should back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.8

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?> );
define( 'DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>' );
define( 'PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.7

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param false|WP_Error $errors Optional. Error object. Default false.
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.6

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.5

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb     WordPress database abstraction object.
 * @global bool $is_nginx Whether the server software is Nginx or something else.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb, $is_nginx;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } elseif ($is_nginx) {
        // End iis7_supports_permalinks(). Link to Nginx documentation instead:
        echo '<li><p>';
        printf(
            /* translators: %s: Documentation URL. */
            __('It seems your network is running with Nginx web server. <a href="%s">Learn more about further configuration</a>.'),
            __('https://wordpress.org/support/article/nginx/')
        );
        echo '</p></li>';
    } else {
        // End $is_nginx. Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Nginx/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.4

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="notice notice-warning inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 === $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us.
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } else {
        // End iis7_supports_permalinks(). Construct an .htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR !== ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // End IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.3

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
	<ol>
		<li><p>
		<?php 
    printf(
        /* translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
		<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
		<p>
			<?php 
        if (1 == $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
			<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
		</p>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
			<?php 
    }
    ?>
		</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: File name (.htaccess or web.config), 2: File path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>"><?php 
        echo esc_textarea($htaccess_file);
        ?></textarea>
		</li>
	</ol>

		<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 5.1

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
			<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
			<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p>
		<?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php, 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: %s: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		</p></div>
		<?php 
    }
    ?>
		<ol>
			<li><p>
			<?php 
    printf(
        /* translators: 1: wp-config.php, 2: location of wp-config file, 3: translated version of "That's all, stop editing! Happy publishing." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy publishing.') . ' */</code>'
    );
    ?>
			</p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
	<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
<p>
		<?php 
        if (1 == $num_keys_salts) {
            printf(
                /* translators: %s: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: %s: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
		<?php 
    }
    ?>
</li>
	<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess, 2: a file path */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
	<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

		<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess, 2: a file path */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
		<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

		<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
		<?php 
    }
}

WordPress Version: 4.6

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(
        /* translators: 1: wp-config.php 2: location of wp-config file, 3: translated version of "That's all, stop editing! Happy blogging." */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading %3$s:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>',
        /*
         * translators: This string should only be translated if wp-config-sample.php is localized.
         * You can check the localized release package or
         * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
         */
        '<code>/* ' . __('That&#8217;s all, stop editing! Happy blogging.') . ' */</code>'
    );
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p>
		<?php 
        if (1 == $num_keys_salts) {
            printf(
                /* translators: 1: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: 1: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.5

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php 2: .htaccess */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php 2: web.config */
                __('We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            echo '<strong>' . __('Caution:') . '</strong> ';
            printf(
                /* translators: 1: wp-config.php */
                __('We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(
        /* translators: 1: wp-config.php 2: location of wp-config file */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>'
    );
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p>
		<?php 
        if (1 == $num_keys_salts) {
            printf(
                /* translators: 1: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: 1: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.4

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(
                /* translators: 1: wp-config.php 2: .htaccess */
                __('<strong>Caution:</strong> We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>.htaccess</code>'
            );
        } elseif (file_exists($home_path . 'web.config')) {
            printf(
                /* translators: 1: wp-config.php 2: web.config */
                __('<strong>Caution:</strong> We recommend you back up your existing %1$s and %2$s files.'),
                '<code>wp-config.php</code>',
                '<code>web.config</code>'
            );
        } else {
            printf(
                /* translators: 1: wp-config.php */
                __('<strong>Caution:</strong> We recommend you back up your existing %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(
        /* translators: 1: wp-config.php 2: location of wp-config file */
        __('Add the following to your %1$s file in %2$s <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'),
        '<code>wp-config.php</code>',
        '<code>' . $location_of_wp_config . '</code>'
    );
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p>
		<?php 
        if (1 == $num_keys_salts) {
            printf(
                /* translators: 1: wp-config.php */
                __('This unique authentication key is also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        } else {
            printf(
                /* translators: 1: wp-config.php */
                __('These unique authentication keys are also missing from your %s file.'),
                '<code>wp-config.php</code>'
            );
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>web.config</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        printf(
            /* translators: 1: a filename like .htaccess. 2: a file path. */
            __('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'),
            '<code>.htaccess</code>',
            '<code>' . $home_path . '</code>'
        );
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(wp_login_url());
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.3

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 *
 * @global wpdb $wpdb
 *
 * @param WP_Error $errors
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p>
		<?php 
        if (1 == $num_keys_salts) {
            _e('This unique authentication key is also missing from your <code>wp-config.php</code> file.');
        } else {
            _e('These unique authentication keys are also missing from your <code>wp-config.php</code> file.');
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>web.config</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>.htaccess</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.2

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p>
		<?php 
        if (1 == $num_keys_salts) {
            _e('This unique authentication key is also missing from your <code>wp-config.php</code> file.');
        } else {
            _e('These unique authentication keys are also missing from your <code>wp-config.php</code> file.');
        }
        ?>
		<?php 
        _e('To make your installation more secure, you should also add:');
        ?>
	</p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>web.config</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>.htaccess</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        _e('Once you complete these steps, your network is enabled and configured. You will have to log in again.');
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.1

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="7">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p><?php 
        echo _n('This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts);
        ?> <?php 
        _e('To make your installation more secure, you should also add:');
        ?></p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
';
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>web.config</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        
        EOF;
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>.htaccess</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        printf(__('Once you complete these steps, your network is enabled and configured. You will have to log in again.'));
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 4.0

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="6">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p><?php 
        echo _n('This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts);
        ?> <?php 
        _e('To make your installation more secure, you should also add:');
        ?></p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>';
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>web.config</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        EOF;
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>.htaccess</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        printf(__('Once you complete these steps, your network is enabled and configured. You will have to log in again.'));
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 3.9

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = $abspath_fix;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = dirname($abspath_fix);
    }
    $location_of_wp_config = trailingslashit($location_of_wp_config);
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="6">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p><?php 
        echo _n('This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts);
        ?> <?php 
        _e('To make your installation more secure, you should also add:');
        ?></p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . 'wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>';
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>web.config</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}wp-includes/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        EOF;
        echo '<li><p>';
        /* translators: 1: a filename like .htaccess. 2: a file path. */
        printf(__('Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:'), '<code>.htaccess</code>', '<code>' . $home_path . '</code>');
        echo '</p>';
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        printf(__('Once you complete these steps, your network is enabled and configured. You will have to log in again.'));
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}

WordPress Version: 3.7

/**
 * Prints step 2 for Network installation process.
 *
 * @since 3.0.0
 */
function network_step2($errors = false)
{
    global $wpdb;
    $hostname = get_clean_basedomain();
    $slashed_home = trailingslashit(get_option('home'));
    $base = parse_url($slashed_home, PHP_URL_PATH);
    $document_root_fix = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
    $abspath_fix = str_replace('\\', '/', ABSPATH);
    $home_path = (0 === strpos($abspath_fix, $document_root_fix)) ? $document_root_fix . $base : get_home_path();
    $wp_siteurl_subdir = preg_replace('#^' . preg_quote($home_path, '#') . '#', '', $abspath_fix);
    $rewrite_base = (!empty($wp_siteurl_subdir)) ? ltrim(trailingslashit($wp_siteurl_subdir), '/') : '';
    $location_of_wp_config = ABSPATH;
    if (!file_exists(ABSPATH . 'wp-config.php') && file_exists(dirname(ABSPATH) . '/wp-config.php')) {
        $location_of_wp_config = trailingslashit(dirname(ABSPATH));
    }
    // Wildcard DNS message.
    if (is_wp_error($errors)) {
        echo '<div class="error">' . $errors->get_error_message() . '</div>';
    }
    if ($_POST) {
        if (allow_subdomain_install()) {
            $subdomain_install = allow_subdirectory_install() ? !empty($_POST['subdomain_install']) : true;
        } else {
            $subdomain_install = false;
        }
    } else if (is_multisite()) {
        $subdomain_install = is_subdomain_install();
        ?>
	<p><?php 
        _e('The original configuration steps are shown here for reference.');
        ?></p>
<?php 
    } else {
        $subdomain_install = (bool) $wpdb->get_var("SELECT meta_value FROM {$wpdb->sitemeta} WHERE site_id = 1 AND meta_key = 'subdomain_install'");
        ?>
	<div class="error"><p><strong><?php 
        _e('Warning:');
        ?></strong> <?php 
        _e('An existing WordPress network was detected.');
        ?></p></div>
	<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>
<?php 
    }
    $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
    $subdir_replacement_01 = $subdomain_install ? '' : '$1';
    $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
    if ($_POST || !is_multisite()) {
        ?>
		<h3><?php 
        esc_html_e('Enabling the Network');
        ?></h3>
		<p><?php 
        _e('Complete the following steps to enable the features for creating a network of sites.');
        ?></p>
		<div class="updated inline"><p><?php 
        if (file_exists($home_path . '.htaccess')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), '.htaccess');
        } elseif (file_exists($home_path . 'web.config')) {
            printf(__('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.'), 'web.config');
        } else {
            _e('<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.');
        }
        ?></p></div>
<?php 
    }
    ?>
		<ol>
			<li><p><?php 
    printf(__('Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:'), $location_of_wp_config);
    ?></p>
				<textarea class="code" readonly="readonly" cols="100" rows="6">
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', <?php 
    echo $subdomain_install ? 'true' : 'false';
    ?>);
define('DOMAIN_CURRENT_SITE', '<?php 
    echo $hostname;
    ?>');
define('PATH_CURRENT_SITE', '<?php 
    echo $base;
    ?>');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);</textarea>
<?php 
    $keys_salts = array('AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '');
    foreach ($keys_salts as $c => $v) {
        if (defined($c)) {
            unset($keys_salts[$c]);
        }
    }
    if (!empty($keys_salts)) {
        $keys_salts_str = '';
        $from_api = wp_remote_get('https://api.wordpress.org/secret-key/1.1/salt/');
        if (is_wp_error($from_api)) {
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . wp_generate_password(64, true, true) . "' );";
            }
        } else {
            $from_api = explode("\n", wp_remote_retrieve_body($from_api));
            foreach ($keys_salts as $c => $v) {
                $keys_salts_str .= "\ndefine( '{$c}', '" . substr(array_shift($from_api), 28, 64) . "' );";
            }
        }
        $num_keys_salts = count($keys_salts);
        ?>
	<p><?php 
        echo _n('This unique authentication key is also missing from your <code>wp-config.php</code> file.', 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.', $num_keys_salts);
        ?> <?php 
        _e('To make your installation more secure, you should also add:');
        ?></p>
	<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo $num_keys_salts;
        ?>"><?php 
        echo esc_textarea($keys_salts_str);
        ?></textarea>
<?php 
    }
    ?>
</li>
<?php 
    if (iis7_supports_permalinks()) {
        // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
        $iis_subdir_match = ltrim($base, '/') . $subdir_match;
        $iis_rewrite_base = ltrim($base, '/') . $rewrite_base;
        $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
        $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $web_config_file .= '
                <rule name="WordPress Rule for Files" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . 'wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
                </rule>';
        }
        $web_config_file .= '
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>';
        ?>
		<li><p><?php 
        printf(__('Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:'), $home_path);
        ?></p>
		<?php 
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="20"><?php 
        echo esc_textarea($web_config_file);
        ?>
		</textarea></li>
		</ol>

	<?php 
    } else {
        // end iis7_supports_permalinks(). construct an htaccess file instead:
        $ms_files_rewriting = '';
        if (is_multisite() && get_site_option('ms_files_rewriting')) {
            $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
            $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}wp-includes/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
        }
        $htaccess_file = <<<EOF
        RewriteEngine On
        RewriteBase {$base}
        RewriteRule ^index\\.php\$ - [L]
        {$ms_files_rewriting}
        # add a trailing slash to /wp-admin
        RewriteRule ^{$subdir_match}wp-admin\$ {$subdir_replacement_01}wp-admin/ [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule ^{$subdir_match}(.*\\.php)\$ {$rewrite_base}{$subdir_replacement_12} [L]
        RewriteRule . index.php [L]
        EOF;
        ?>
		<li><p><?php 
        printf(__('Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:'), $home_path);
        ?></p>
		<?php 
        if (!$subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content') {
            echo '<p><strong>' . __('Warning:') . ' ' . __('Subdirectory networks may not be fully compatible with custom wp-content directories.') . '</strong></p>';
        }
        ?>
		<textarea class="code" readonly="readonly" cols="100" rows="<?php 
        echo substr_count($htaccess_file, "\n") + 1;
        ?>">
<?php 
        echo esc_textarea($htaccess_file);
        ?></textarea></li>
		</ol>

	<?php 
    }
    // end IIS/Apache code branches.
    if (!is_multisite()) {
        ?>
		<p><?php 
        printf(__('Once you complete these steps, your network is enabled and configured. You will have to log in again.'));
        ?> <a href="<?php 
        echo esc_url(site_url('wp-login.php'));
        ?>"><?php 
        _e('Log In');
        ?></a></p>
<?php 
    }
}