WordPress.org

Make WordPress Core

Ticket #12758: newer_iis_rewrite_rules_404_noblogredirect_fix.diff

File newer_iis_rewrite_rules_404_noblogredirect_fix.diff, 17.7 KB (added by Frumph, 4 years ago)

Okay this is all working, subdirectory, subdomain and shows the info in the network panel.

  • wp-admin/network.php

     
    336336?> 
    337337</li> 
    338338<?php 
    339 // Construct an htaccess file. 
    340 $htaccess_file = 'RewriteEngine On 
    341 RewriteBase ' . $base . ' 
    342 RewriteRule ^index\.php$ - [L] 
    343  
    344 # uploaded files 
    345 RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n"; 
    346  
    347 if ( ! $subdomain_install ) 
    348         $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n"; 
    349  
    350 $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR] 
    351 RewriteCond %{REQUEST_FILENAME} -d 
    352 RewriteRule ^ - [L]'; 
    353  
    354 // @todo custom content dir. 
    355 if ( ! $subdomain_install ) 
    356         $htaccess_file .= "\n" . 'RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] 
    357 RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]'; 
    358  
    359 $htaccess_file .= "\nRewriteRule . index.php [L]"; 
    360  
    361 ?> 
    362                         <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
    363                                 <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>"> 
    364 <?php echo wp_htmledit_pre( $htaccess_file ); ?> 
    365 </textarea></li> 
     339        if (iis7_supports_permalinks()) {  
     340                        if (is_subdomain_install()) { 
     341                                $web_config_file =  
     342'<?xml version="1.0" encoding="UTF-8"?> 
     343<configuration> 
     344    <system.webServer> 
     345        <rewrite> 
     346            <rules> 
     347                <rule name="WordPress Rule 1" stopProcessing="true"> 
     348                    <match url="^index\.php$" ignoreCase="false" /> 
     349                    <action type="None" /> 
     350                </rule> 
     351                <rule name="WordPress Rule 2" stopProcessing="true"> 
     352                    <match url="^files/(.+)" ignoreCase="false" /> 
     353                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" /> 
     354                </rule> 
     355                <rule name="WordPress Rule 3" stopProcessing="true"> 
     356                    <match url="^" ignoreCase="false" /> 
     357                    <conditions logicalGrouping="MatchAny"> 
     358                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
     359                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
     360                    </conditions> 
     361                    <action type="None" /> 
     362                </rule> 
     363                <rule name="WordPress Rule 4" stopProcessing="true"> 
     364                    <match url="." ignoreCase="false" /> 
     365                    <action type="Rewrite" url="index.php" /> 
     366                </rule> 
     367            </rules> 
     368        </rewrite> 
     369    </system.webServer> 
     370</configuration>'; 
     371                        } else { 
     372                                $web_config_file =  
     373'<?xml version="1.0" encoding="UTF-8"?> 
     374<configuration> 
     375    <system.webServer> 
     376        <rewrite> 
     377            <rules> 
     378                <rule name="WordPress Rule 1" stopProcessing="true"> 
     379                    <match url="^index\.php$" ignoreCase="false" /> 
     380                    <action type="None" /> 
     381                </rule> 
     382                <rule name="WordPress Rule 2" stopProcessing="true"> 
     383                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" /> 
     384                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> 
     385                </rule> 
     386                <rule name="WordPress Rule 3" stopProcessing="true"> 
     387                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" /> 
     388                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" /> 
     389                </rule> 
     390                <rule name="WordPress Rule 4" stopProcessing="true"> 
     391                    <match url="^" ignoreCase="false" /> 
     392                    <conditions logicalGrouping="MatchAny"> 
     393                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> 
     394                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
     395                    </conditions> 
     396                    <action type="None" /> 
     397                </rule> 
     398                <rule name="WordPress Rule 5" stopProcessing="true"> 
     399                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" /> 
     400                    <action type="Rewrite" url="{R:2}" /> 
     401                </rule> 
     402                <rule name="WordPress Rule 6" stopProcessing="true"> 
     403                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> 
     404                    <action type="Rewrite" url="{R:2}" /> 
     405                </rule> 
     406                <rule name="WordPress Rule 7" stopProcessing="true"> 
     407                    <match url="." ignoreCase="false" /> 
     408                    <action type="Rewrite" url="index.php" /> 
     409                </rule> 
     410            </rules> 
     411        </rewrite> 
     412    </system.webServer> 
     413</configuration>'; 
     414                        } 
     415        ?> 
     416                <li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
     417                <textarea class="code" readonly="readonly" cols="100" rows="20"> 
     418                <?php echo wp_htmledit_pre( $web_config_file ); ?> 
     419                </textarea></li> 
    366420                </ol> 
    367 <?php if ( !is_multisite() ) { ?> 
     421        <?php } else { 
     422                // Construct an htaccess file. 
     423                $htaccess_file = 'RewriteEngine On 
     424                                RewriteBase ' . $base . ' 
     425                                RewriteRule ^index\.php$ - [L] 
     426                                 
     427                                # uploaded files 
     428                                RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n"; 
     429                 
     430                if ( ! $subdomain_install ) 
     431                        $htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n"; 
     432                 
     433                $htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR] 
     434                                RewriteCond %{REQUEST_FILENAME} -d 
     435                                RewriteRule ^ - [L]'; 
     436                 
     437                // @todo custom content dir. 
     438                if ( ! $subdomain_install ) 
     439                        $htaccess_file .= "\n" . 'RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] 
     440                                        RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]'; 
     441                 
     442                $htaccess_file .= "\nRewriteRule . index.php [L]"; 
     443                 
     444                ?> 
     445                <li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p> 
     446                <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>"> 
     447                <?php echo wp_htmledit_pre( $htaccess_file ); ?> 
     448                </textarea></li> 
     449                </ol> 
     450        <?php } 
     451        if ( !is_multisite() ) { ?> 
    368452                <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> 
    369453<?php 
    370454        } 
  • wp-includes/ms-functions.php

     
    13021302 
    13031303function maybe_redirect_404() { 
    13041304        global $current_site; 
    1305         if ( is_main_site() && is_404() && defined( 'NOBLOGREDIRECT' ) && ( $destination = NOBLOGREDIRECT ) ) { 
     1305        if ( !is_subdomain_install() && is_main_site() && is_404() && defined( 'NOBLOGREDIRECT' ) && ( $destination = NOBLOGREDIRECT ) ) { 
    13061306                if ( $destination == '%siteurl%' ) 
    13071307                        $destination = network_home_url(); 
    13081308                wp_redirect( $destination ); 
  • wp-includes/rewrite.php

     
    17571757 
    17581758                if ( ! $this->using_permalinks() ) 
    17591759                        return ''; 
    1760  
     1760                $rules = ''; 
     1761                $extra_indent = ''; 
     1762                if ( $add_parent_tags ) { 
     1763                        $rules .= "<configuration>".$end_of_line; 
     1764                        $rules .= $indent."<system.webServer>".$end_of_line; 
     1765                        $rules .= $indent.$indent."<rewrite>".$end_of_line; 
     1766                        $rules .= $indent.$indent.$indent."<rules>".$end_of_line; 
     1767                        $extra_indent = $indent.$indent.$indent.$indent; 
     1768                } 
    17611769                if ( !is_multisite() ) { 
    1762                         $rules = ''; 
    1763                         $extra_indent = ''; 
    17641770                        if ( $add_parent_tags ) { 
    17651771                                $rules .= "<configuration>".$end_of_line; 
    17661772                                $rules .= $indent."<system.webServer>".$end_of_line; 
     
    17781784                        $rules .= $extra_indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line; 
    17791785                        $rules .= $extra_indent."</rule>"; 
    17801786 
    1781                         if ( $add_parent_tags ) { 
    1782                                 $rules .= $end_of_line.$indent.$indent.$indent."</rules>".$end_of_line; 
    1783                                 $rules .= $indent.$indent."</rewrite>".$end_of_line; 
    1784                                 $rules .= $indent."</system.webServer>".$end_of_line; 
    1785                                 $rules .= "</configuration>"; 
     1787                } else { 
     1788                        if (is_subdomain_install()) { 
     1789                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 1\" stopProcessing=\"true\">".$end_of_line; 
     1790                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^index\.php$\" ignoreCase=\"false\" />".$end_of_line; 
     1791                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line; 
     1792                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1793                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 2\" stopProcessing=\"true\">".$end_of_line; 
     1794                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^files/(.+)\" ignoreCase=\"false\" />".$end_of_line; 
     1795                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"wp-includes/ms-files.php?file={R:1}\" appendQueryString=\"false\" />".$end_of_line; 
     1796                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1797                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 3\" stopProcessing=\"true\">".$end_of_line; 
     1798                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^\" ignoreCase=\"false\" />".$end_of_line; 
     1799                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<conditions logicalGrouping=\"MatchAny\">".$end_of_line; 
     1800                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" ignoreCase=\"false\" />".$end_of_line; 
     1801                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" />".$end_of_line; 
     1802                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."</conditions>".$end_of_line; 
     1803                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line; 
     1804                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1805                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 4\" stopProcessing=\"true\">".$end_of_line; 
     1806                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\".\" ignoreCase=\"false\" />".$end_of_line; 
     1807                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line; 
     1808                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1809                        } else { 
     1810                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 1\" stopProcessing=\"true\">".$end_of_line; 
     1811                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^index\.php$\" ignoreCase=\"false\" />".$end_of_line; 
     1812                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line; 
     1813                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1814                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 2\" stopProcessing=\"true\">".$end_of_line; 
     1815                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?files/(.+)\" ignoreCase=\"false\" />".$end_of_line; 
     1816                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"wp-includes/ms-files.php?file={R:2}\" appendQueryString=\"false\" />".$end_of_line; 
     1817                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1818                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 3\" stopProcessing=\"true\">".$end_of_line; 
     1819                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?wp-admin$\" ignoreCase=\"false\" />".$end_of_line; 
     1820                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Redirect\" url=\"{R:1}wp-admin/\" redirectType=\"Permanent\" />".$end_of_line; 
     1821                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1822                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 4\" stopProcessing=\"true\">".$end_of_line; 
     1823                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^\" ignoreCase=\"false\" />".$end_of_line; 
     1824                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<conditions logicalGrouping=\"MatchAny\">".$end_of_line; 
     1825                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" ignoreCase=\"false\" />".$end_of_line; 
     1826                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" />".$end_of_line; 
     1827                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."</conditions>".$end_of_line; 
     1828                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line; 
     1829                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1830                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 5\" stopProcessing=\"true\">".$end_of_line; 
     1831                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)\" ignoreCase=\"false\" />".$end_of_line; 
     1832                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"{R:2}\" />".$end_of_line; 
     1833                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1834                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 6\" stopProcessing=\"true\">".$end_of_line; 
     1835                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?(.*\.php)$\" ignoreCase=\"false\" />".$end_of_line; 
     1836                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"{R:2}\" />".$end_of_line; 
     1837                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
     1838                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 7\" stopProcessing=\"true\">".$end_of_line; 
     1839                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\".\" ignoreCase=\"false\" />".$end_of_line; 
     1840                                $rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line; 
     1841                                $rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line; 
    17861842                        } 
    1787                 } else { 
    1788                         $siteurl = get_option( 'siteurl' ); 
    1789                         $siteurl_len = strlen( $siteurl ); 
    1790                         if ( substr( WP_CONTENT_URL, 0, $siteurl_len ) == $siteurl && strlen( WP_CONTENT_URL ) > $siteurl_len ) 
    1791                                 $content_path = substr( WP_CONTENT_URL, $siteurl_len + 1 ); 
    1792                         else 
    1793                                 $content_path = 'wp-content'; 
    1794                         $rules = '<rule name="wordpress - strip index.php" stopProcessing="false"> 
    1795                                         <match url="^index.php/(.*)$" /> 
    1796                                                 <action type="Rewrite" url="{R:1}" /> 
    1797                                         </rule> 
    1798                                         <rule name="wordpress - 1" stopProcessing="true"> 
    1799                                                 <match url="^(.*/)?files/$" /> 
    1800                                                 <action type="Rewrite" url="index.php" /> 
    1801                                         </rule> 
    1802                                         <rule name="wordpress - 2" stopProcessing="true"> 
    1803                                                 <match url="^(.*/)?files/(.*)" /> 
    1804                                                 <conditions> 
    1805                                                         <add input="{REQUEST_URI}" negate="true" pattern=".*' . $content_path . '/plugins.*"/> 
    1806                                                 </conditions> 
    1807                                                 <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> 
    1808                                         </rule> 
    1809                                         <rule name="wordpress - 3" stopProcessing="true"> 
    1810                                                 <match url="^(.+)$" /> 
    1811                                                 <conditions> 
    1812                                                         <add input="{REQUEST_URI}" pattern="^.*/wp-admin$" /> 
    1813                                                 </conditions> 
    1814                                                 <action type="Redirect" url="{R:1}/" redirectType="Permanent" /> 
    1815                                         </rule> 
    1816                                         <rule name="wordpress - 4" stopProcessing="true"> 
    1817                                                 <match url="."/> 
    1818                                                 <conditions logicalGrouping="MatchAny"> 
    1819                                                         <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" /> 
    1820                                                         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" /> 
    1821                                                 </conditions> 
    1822                                                 <action type="None" /> 
    1823                                         </rule> 
    1824                                         <rule name="wordpress - 5" stopProcessing="true"> 
    1825                                                 <match url="^([_0-9a-zA-Z-]+/)?(wp-.*)" /> 
    1826                                                 <action type="Rewrite" url="{R:2}" /> 
    1827                                         </rule> 
    1828                                         <rule name="wordpress - 6" stopProcessing="true"> 
    1829                                                 <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" /> 
    1830                                                 <action type="Rewrite" url="{R:2}" /> 
    1831                                         </rule> 
    1832                                         <rule name="wordpress - 7" stopProcessing="true"> 
    1833                                                 <match url="." /> 
    1834                                                 <action type="Rewrite" url="index.php" /> 
    1835                                         </rule>'; 
    18361843                } 
    1837  
     1844                if ( $add_parent_tags ) { 
     1845                        $rules .= $end_of_line.$indent.$indent.$indent."</rules>".$end_of_line; 
     1846                        $rules .= $indent.$indent."</rewrite>".$end_of_line; 
     1847                        $rules .= $indent."</system.webServer>".$end_of_line; 
     1848                        $rules .= "</configuration>"; 
     1849                } 
    18381850                $rules = apply_filters('iis7_url_rewrite_rules', $rules); 
    18391851 
    18401852                return $rules;