<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[22042] trunk: Make Multisite work when WordPress is installed in a subdirectory.</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg > ul, #logmsg > ol { margin-left: 0; margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://core.trac.wordpress.org/changeset/22042">22042</a></dd>
<dt>Author</dt> <dd>markjaquith</dd>
<dt>Date</dt> <dd>2012-09-27 06:07:21 +0000 (Thu, 27 Sep 2012)</dd>
</dl>
<h3>Log Message</h3>
<pre>Make Multisite work when WordPress is installed in a subdirectory. You can now have WordPress Multisite as an SVN external or a Git submodule! props johnjamesjacoby, evansolomon, duck_, jakemgold, nacin, markjaquith. see <a href="http://core.trac.wordpress.org/ticket/19796">#19796</a></pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminnetworksitenewphp">trunk/wp-admin/network/site-new.php</a></li>
<li><a href="#trunkwpadminnetworkphp">trunk/wp-admin/network.php</a></li>
<li><a href="#trunkwpincludesrewritephp">trunk/wp-includes/rewrite.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminnetworksitenewphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/network/site-new.php (22041 => 22042)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/network/site-new.php        2012-09-27 05:52:42 UTC (rev 22041)
+++ trunk/wp-admin/network/site-new.php        2012-09-27 06:07:21 UTC (rev 22042)
</span><span class="lines">@@ -62,10 +62,10 @@
</span><span class="cx">
</span><span class="cx">         if ( is_subdomain_install() ) {
</span><span class="cx">                 $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain );
</span><del>-                $path = $base;
</del><ins>+                $path = $current_site->path;
</ins><span class="cx">         } else {
</span><span class="cx">                 $newdomain = $current_site->domain;
</span><del>-                $path = $base . $domain . '/';
</del><ins>+                $path = $current_site->path . $domain . '/';
</ins><span class="cx">         }
</span><span class="cx">
</span><span class="cx">         $password = 'N/A';
</span></span></pre></div>
<a id="trunkwpadminnetworkphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/network.php (22041 => 22042)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/network.php        2012-09-27 05:52:42 UTC (rev 22041)
+++ trunk/wp-admin/network.php        2012-09-27 06:07:21 UTC (rev 22042)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> * @return bool Whether subdomain install is allowed
</span><span class="cx"> */
</span><span class="cx"> function allow_subdomain_install() {
</span><del>-        $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'siteurl' ) );
-        if( false !== strpos( $domain, '/' ) || 'localhost' == $domain || preg_match( '|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|', $domain ) )
</del><ins>+        $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) );
+        if( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) )
</ins><span class="cx">                 return false;
</span><span class="cx">
</span><span class="cx">         return true;
</span><span class="lines">@@ -144,13 +144,6 @@
</span><span class="cx"> function network_step1( $errors = false ) {
</span><span class="cx">         global $is_apache;
</span><span class="cx">
</span><del>-        if ( get_option( 'siteurl' ) != get_option( 'home' ) ) {
-                echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . sprintf( __( 'Your <strong>WordPress address</strong> must match your <strong>Site address</strong> before creating a Network. See <a href="%s">General Settings</a>.' ), esc_url( admin_url( 'options-general.php' ) ) ) . '</p></div>';
-                echo '</div>';
-                include ( ABSPATH . 'wp-admin/admin-footer.php' );
-                die();
-        }
-
</del><span class="cx">         if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
</span><span class="cx">                 echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>';
</span><span class="cx">                 echo '</div>';
</span><span class="lines">@@ -314,11 +307,14 @@
</span><span class="cx"> * @since 3.0.0
</span><span class="cx"> */
</span><span class="cx"> function network_step2( $errors = false ) {
</span><del>-        global $base, $wpdb;
-        $hostname = get_clean_basedomain();
</del><ins>+        global $wpdb;
</ins><span class="cx">
</span><del>-        if ( ! isset( $base ) )
-                $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
</del><ins>+        $hostname = get_clean_basedomain();
+        $slashed_home = trailingslashit( get_option( 'home' ) );
+        $base = parse_url( $slashed_home, PHP_URL_PATH );
+        $wp_dir_from_root = preg_replace( '#^' . preg_quote( $_SERVER['DOCUMENT_ROOT'], '#' ) . '#', '', ABSPATH );
+        $wp_siteurl_subdir = trailingslashit( '/' . preg_replace( '#^' . preg_quote( $base, '#' ) . '#', '', $wp_dir_from_root ) );
+        $rewrite_base = ! empty( $wp_siteurl_subdir ) ? ltrim( trailingslashit( $wp_siteurl_subdir ), '/' ) : '';
</ins><span class="cx">
</span><span class="cx">         // Wildcard DNS message.
</span><span class="cx">         if ( is_wp_error( $errors ) )
</span><span class="lines">@@ -344,6 +340,10 @@
</span><span class="cx">                 }
</span><span class="cx">         }
</span><span class="cx">
</span><ins>+        $subdir_match = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
+        $subdir_replacement_01 = $subdomain_install ? '' : '$1';
+        $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
+
</ins><span class="cx">         if ( $_POST || ! is_multisite() ) {
</span><span class="cx"> ?>
</span><span class="cx">                 <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
</span><span class="lines">@@ -361,20 +361,21 @@
</span><span class="cx"> ?>
</span><span class="cx">                 <ol>
</span><span class="cx">                         <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>:' ), ABSPATH ); ?></p>
</span><del>-                                <textarea class="code" readonly="readonly" cols="100" rows="7">
</del><ins>+                                <textarea class="code" readonly="readonly" cols="100" rows="6">
</ins><span class="cx"> define('MULTISITE', true);
</span><span class="cx"> define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
</span><del>-$base = '<?php echo $base; ?>';
</del><span class="cx"> define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
</span><span class="cx"> define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
</span><span class="cx"> define('SITE_ID_CURRENT_SITE', 1);
</span><del>-define('BLOG_ID_CURRENT_SITE', 1);</textarea>
</del><ins>+define('BLOG_ID_CURRENT_SITE', 1);
+</textarea>
</ins><span class="cx"> <?php
</span><span class="cx">         $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
</span><span class="cx">         foreach ( $keys_salts as $c => $v ) {
</span><span class="cx">                 if ( defined( $c ) )
</span><span class="cx">                         unset( $keys_salts[ $c ] );
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         if ( ! empty( $keys_salts ) ) {
</span><span class="cx">                 $keys_salts_str = '';
</span><span class="cx">                 $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
</span><span class="lines">@@ -399,10 +400,13 @@
</span><span class="cx"> </li>
</span><span class="cx"> <?php
</span><span class="cx">         if ( iis7_supports_permalinks() ) :
</span><ins>+                // 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}';
</ins><span class="cx">
</span><del>-                        if ( $subdomain_install ) {
-                                $web_config_file =
-'<?xml version="1.0" encoding="UTF-8"?>
</del><ins>+                $web_config_file = <<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
</ins><span class="cx"> <configuration>
</span><span class="cx"> <system.webServer>
</span><span class="cx"> <rewrite>
</span><span class="lines">@@ -414,51 +418,16 @@
</span><span class="cx">                                 if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
</span><span class="cx">                                         $web_config_file .= '
</span><span class="cx"> <rule name="WordPress Rule for Files" stopProcessing="true">
</span><del>- <match url="^files/(.+)" ignoreCase="false" />
- <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
</del><ins>+ <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" />
</ins><span class="cx"> </rule>';
</span><span class="cx"> }
</span><span class="cx"> $web_config_file .= '
</span><span class="cx"> <rule name="WordPress Rule 2" stopProcessing="true">
</span><del>- <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" />
</del><ins>+ <match url="^{$iis_subdir_match}wp-admin$" ignoreCase="false" />
+ <action type="Redirect" url="{$iis_subdir_replacement}wp-admin/" redirectType="Permanent" />
</ins><span class="cx"> </rule>
</span><span class="cx"> <rule name="WordPress Rule 3" stopProcessing="true">
</span><del>- <match url="." ignoreCase="false" />
- <action type="Rewrite" url="index.php" />
- </rule>
- </rules>
- </rewrite>
- </system.webServer>
-</configuration>';
-                        } else {
-                                $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="^files/(.+)" ignoreCase="false" />
- <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
- </rule>';
- }
- $web_config_file .= '
- <rule name="WordPress Rule 2" stopProcessing="true">
- <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
- <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
- </rule>
- <rule name="WordPress Rule 3" stopProcessing="true">
</del><span class="cx"> <match url="^" ignoreCase="false" />
</span><span class="cx"> <conditions logicalGrouping="MatchAny">
</span><span class="cx"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
</span><span class="lines">@@ -467,12 +436,12 @@
</span><span class="cx"> <action type="None" />
</span><span class="cx"> </rule>
</span><span class="cx"> <rule name="WordPress Rule 4" stopProcessing="true">
</span><del>- <match url="^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*)" ignoreCase="false" />
- <action type="Rewrite" url="{R:1}" />
</del><ins>+ <match url="^{$iis_subdir_match}(wp-(content|admin|includes).*)" ignoreCase="false" />
+ <action type="Rewrite" url="{$iis_rewrite_base}{R:1}" />
</ins><span class="cx"> </rule>
</span><span class="cx"> <rule name="WordPress Rule 5" stopProcessing="true">
</span><del>- <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
- <action type="Rewrite" url="{R:2}" />
</del><ins>+ <match url="^{$iis_subdir_match}([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
+ <action type="Rewrite" url="{$iis_rewrite_base}{R:2}" />
</ins><span class="cx"> </rule>
</span><span class="cx"> <rule name="WordPress Rule 6" stopProcessing="true">
</span><span class="cx"> <match url="." ignoreCase="false" />
</span><span class="lines">@@ -481,10 +450,11 @@
</span><span class="cx"> </rules>
</span><span class="cx"> </rewrite>
</span><span class="cx"> </system.webServer>
</span><del>-</configuration>';
-                        }
</del><ins>+</configuration>
+EOF;
+
</ins><span class="cx">         ?>
</span><del>-                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
</del><ins>+                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), trailingslashit( str_replace( trailingslashit( $wp_siteurl_subdir ), '', ABSPATH ) ) ); ?></p>
</ins><span class="cx">                 <?php
</span><span class="cx">                 if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
</span><span class="cx">                         echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
</span><span class="lines">@@ -495,28 +465,28 @@
</span><span class="cx">
</span><span class="cx">         <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead:
</span><span class="cx">
</span><del>-                $htaccess_file = 'RewriteEngine On
-RewriteBase ' . $base . '
-RewriteRule ^index\.php$ - [L]' . "\n";
-
</del><ins>+                $ms_files_rewriting = '';
</ins><span class="cx">                 if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
</span><del>-                        $htaccess_file .= "\n# uploaded files\nRewriteRule ^";
-                        $htaccess_file .= ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n";
</del><ins>+                        $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";
</ins><span class="cx">                 }
</span><span class="cx">
</span><del>-                if ( ! $subdomain_install )
-                        $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n";
</del><ins>+                $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]
</ins><span class="cx">
</span><del>-                $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR]
</del><ins>+RewriteCond %{REQUEST_FILENAME} -f [OR]
</ins><span class="cx"> RewriteCond %{REQUEST_FILENAME} -d
</span><del>-RewriteRule ^ - [L]';
</del><ins>+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;
</ins><span class="cx">
</span><del>-                // @todo custom content dir.
-                if ( ! $subdomain_install )
-                        $htaccess_file .= "\nRewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]\nRewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]";
-
-                $htaccess_file .= "\nRewriteRule . index.php [L]";
-
</del><span class="cx">                 ?>
</span><span class="cx">                 <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
</span><span class="cx">                 <?php
</span><span class="lines">@@ -537,14 +507,12 @@
</span><span class="cx">
</span><span class="cx"> if ( $_POST ) {
</span><span class="cx">
</span><del>-        $base = trailingslashit( stripslashes( dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) ) );
-
</del><span class="cx">         check_admin_referer( 'install-network-1' );
</span><span class="cx">
</span><span class="cx">         require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
</span><span class="cx">         // create network tables
</span><span class="cx">         install_network();
</span><del>-        $hostname = get_clean_basedomain();
</del><ins>+        $base = parse_url( trailingslashit( get_option( 'home' ) ), PHP_URL_PATH );
</ins><span class="cx">         $subdomain_install = allow_subdomain_install() ? !empty( $_POST['subdomain_install'] ) : false;
</span><span class="cx">         if ( ! network_domain_check() ) {
</span><span class="cx">                 $result = populate_network( 1, get_clean_basedomain(), sanitize_email( $_POST['email'] ), stripslashes( $_POST['sitename'] ), $base, $subdomain_install );
</span></span></pre></div>
<a id="trunkwpincludesrewritephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/rewrite.php (22041 => 22042)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/rewrite.php        2012-09-27 05:52:42 UTC (rev 22041)
+++ trunk/wp-includes/rewrite.php        2012-09-27 06:07:21 UTC (rev 22042)
</span><span class="lines">@@ -1729,83 +1729,17 @@
</span><span class="cx">                 <rewrite>
</span><span class="cx">                         <rules>';
</span><span class="cx">                 }
</span><del>-                if ( !is_multisite() ) {
-                        $rules .= '
-                                <rule name="wordpress" patternSyntax="Wildcard">
-                                        <match url="*" />
-                                                <conditions>
-                                                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
-                                                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
-                                                </conditions>
-                                        <action type="Rewrite" url="index.php" />
-                                </rule>';
-                } else {
-                        if (is_subdomain_install()) {
-                                $rules .= '
-                                <rule name="WordPress Rule 1" stopProcessing="true">
-                                        <match url="^index\.php$" ignoreCase="false" />
-                                        <action type="None" />
-                                </rule>';
-                                if ( get_site_option( 'ms_files_rewriting' ) ) {
-                                        $rules .= '
-                                <rule name="WordPress Rule for Files" stopProcessing="true">
-                                        <match url="^files/(.+)" ignoreCase="false" />
-                                        <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
-                                </rule>';
-                                }
-                                $rules .= '
-                                <rule name="WordPress Rule 2" 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" />
</del><ins>+
+                $rules .= '
+                        <rule name="wordpress" patternSyntax="Wildcard">
+                                <match url="*" />
+                                        <conditions>
+                                                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
+                                                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</ins><span class="cx">                                         </conditions>
</span><del>-                                        <action type="None" />
-                                </rule>
-                                <rule name="WordPress Rule 3" stopProcessing="true">
-                                        <match url="." ignoreCase="false" />
-                                        <action type="Rewrite" url="index.php" />
-                                </rule>';
-                        } else {
-                                $rules .= '
-                                <rule name="WordPress Rule 1" stopProcessing="true">
-                                        <match url="^index\.php$" ignoreCase="false" />
-                                        <action type="None" />
-                                </rule>';
-                                if ( get_site_option( 'ms_files_rewriting' ) ) {
-                                        $rules .= '
-                                <rule name="WordPress Rule for Files" stopProcessing="true">
-                                        <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
-                                        <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
-                                </rule>';
-                                }
-                                $rules .= '
-                                <rule name="WordPress Rule 2" stopProcessing="true">
-                                        <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
-                                        <action type="Redirect" url="{R:1}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="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
-                                        <action type="Rewrite" url="{R:1}" />
-                                </rule>
-                                <rule name="WordPress Rule 5" stopProcessing="true">
-                                        <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
-                                        <action type="Rewrite" url="{R:2}" />
-                                </rule>
-                                <rule name="WordPress Rule 6" stopProcessing="true">
-                                        <match url="." ignoreCase="false" />
-                                        <action type="Rewrite" url="index.php" />
-                                </rule>';
-                        }
-                }
</del><ins>+                                <action type="Rewrite" url="index.php" />
+                        </rule>';
+
</ins><span class="cx">                 if ( $add_parent_tags ) {
</span><span class="cx">                         $rules .= '
</span><span class="cx">                         </rules>
</span></span></pre>
</div>
</div>
</body>
</html>