WordPress.org

Make WordPress Core

Ticket #10386: 10386.patch

File 10386.patch, 4.6 KB (added by ruslany, 5 years ago)

Patch with proposed fix.

  • wp-admin/options-permalink.php

     
    222222</p> 
    223223  </form> 
    224224<?php if ($iis7_permalinks) : 
    225         if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) : ?> 
     225        if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) :  
     226                if ( file_exists($home_path . 'web.config') ) : ?> 
    226227<p><?php _e('If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> element in <code>web.config</code> file.') ?></p> 
    227228<form action="options-permalink.php" method="post"> 
    228229<?php wp_nonce_field('update-permalink') ?> 
    229         <p><textarea rows="10" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p> 
     230        <p><textarea rows="9" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p> 
    230231</form> 
    231232<p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.')  ?></p> 
     233                <?php else : ?> 
     234<p><?php _e('If the root directory of your site were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Create a new file, called <code>web.config</code> in the root directory of your site. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this code into the <code>web.config</code> file.') ?></p> 
     235<form action="options-permalink.php" method="post"> 
     236<?php wp_nonce_field('update-permalink') ?> 
     237        <p><textarea rows="18" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules(true)); ?></textarea></p> 
     238</form> 
     239<p><?php _e('If you temporarily make your site&#8217;s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.')  ?></p>                     
     240                <?php endif; ?> 
    232241        <?php endif; ?> 
    233242<?php else : 
    234243        if ( $permalink_structure && ! $usingpi && ! $writable ) : ?> 
  • wp-includes/rewrite.php

     
    17151715         * 
    17161716         * @return string 
    17171717         */ 
    1718         function iis7_url_rewrite_rules(){ 
     1718        function iis7_url_rewrite_rules($add_parent_tags = false){ 
    17191719 
    17201720                if ( ! $this->using_permalinks()) { 
    17211721                        return ''; 
    17221722                } 
    1723                 $rules  = "<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n"; 
    1724                 $rules .= "     <match url=\"*\" />\n"; 
    1725                 $rules .= "     <conditions>\n"; 
    1726                 $rules .= "             <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n"; 
    1727                 $rules .= "             <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n"; 
    1728                 $rules .= "     </conditions>\n"; 
    1729                 $rules .= "     <action type=\"Rewrite\" url=\"index.php\" />\n"; 
    1730                 $rules .= "</rule>"; 
     1723                 
     1724                $rules = ''; 
     1725                $indent = ''; 
     1726                if ( $add_parent_tags ) { 
     1727                        $rules .= "<configuration>\n"; 
     1728                        $rules .= "  <system.webServer>\n"; 
     1729                        $rules .= "    <rewrite>\n"; 
     1730                        $rules .= "      <rules>\n"; 
     1731                        $indent = "        "; 
     1732                } 
     1733                 
     1734                $rules .= $indent."<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n"; 
     1735                $rules .= $indent."  <match url=\"*\" />\n"; 
     1736                $rules .= $indent."  <conditions>\n"; 
     1737                $rules .= $indent."    <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n"; 
     1738                $rules .= $indent."    <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n"; 
     1739                $rules .= $indent."  </conditions>\n"; 
     1740                $rules .= $indent."  <action type=\"Rewrite\" url=\"index.php\" />\n"; 
     1741                $rules .= $indent."</rule>"; 
     1742                 
     1743                if ( $add_parent_tags ) { 
     1744                        $rules .= "\n      </rules>\n"; 
     1745                        $rules .= "    </rewrite>\n"; 
     1746                        $rules .= "  </system.webServer>\n"; 
     1747                        $rules .= "</configuration>\n";                  
     1748                } 
    17311749 
    17321750                $rules = apply_filters('iis7_url_rewrite_rules', $rules); 
    17331751